Brute force fail

This commit is contained in:
Guilherme Werner
2023-06-17 16:10:47 -03:00
parent 948198a69b
commit 52f777e625
3 changed files with 47 additions and 2 deletions

View File

@ -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);
}

View File

@ -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);
};

View File

@ -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;
}