mirror of
https://github.com/guilhermewerner/paa
synced 2025-06-15 04:54:19 +00:00
Brute force fail
This commit is contained in:
@ -156,3 +156,42 @@ void Graph::TransitiveClosure()
|
||||
cout << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
void Graph::PrintPermutations(const vector<int> &array)
|
||||
{
|
||||
for (const auto &permutation : array)
|
||||
{
|
||||
cout << permutation << " ";
|
||||
}
|
||||
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
void Graph::PermuteArray(vector<int> &array, int start)
|
||||
{
|
||||
if (start == array.size() - 1)
|
||||
{
|
||||
PrintPermutations(array);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = start; i < array.size(); i++)
|
||||
{
|
||||
swap(array[start], array[i]);
|
||||
this->PermuteArray(array, start + 1);
|
||||
swap(array[start], array[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Graph::Permute()
|
||||
{
|
||||
std::vector<int> vertices;
|
||||
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
vertices[i] = i;
|
||||
}
|
||||
|
||||
this->PermuteArray(vertices, 0);
|
||||
}
|
||||
|
@ -37,9 +37,12 @@ public:
|
||||
void Remove(int u, int v);
|
||||
void RemoveD(int u, int v);
|
||||
void TransitiveClosure();
|
||||
void Permute();
|
||||
Graph *Clone();
|
||||
|
||||
private:
|
||||
void DFS(int u, vector<int> &disc, vector<int> &low, vector<int> &parent, vector<pair<int, int>> &bridge);
|
||||
int DFSCount(int v, bool visited[]);
|
||||
void PrintPermutations(const std::vector<int> &array);
|
||||
void PermuteArray(std::vector<int> &array, int start);
|
||||
};
|
||||
|
@ -11,8 +11,11 @@ int main()
|
||||
g1->InsertD(2, 0);
|
||||
g1->InsertD(2, 3);
|
||||
|
||||
cout << "-- TRANSITIVE CLOSURE --\n\n";
|
||||
g1->TransitiveClosure();
|
||||
cout << "-- PERMUTATIONS --\n\n";
|
||||
g1->Permute();
|
||||
|
||||
//cout << "-- TRANSITIVE CLOSURE --\n\n";
|
||||
//g1->TransitiveClosure();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user