mirror of
https://github.com/guilhermewerner/paa
synced 2025-06-16 05:24:18 +00:00
Brute force fail
This commit is contained in:
@ -156,3 +156,42 @@ void Graph::TransitiveClosure()
|
|||||||
cout << "\n";
|
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 Remove(int u, int v);
|
||||||
void RemoveD(int u, int v);
|
void RemoveD(int u, int v);
|
||||||
void TransitiveClosure();
|
void TransitiveClosure();
|
||||||
|
void Permute();
|
||||||
Graph *Clone();
|
Graph *Clone();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void DFS(int u, vector<int> &disc, vector<int> &low, vector<int> &parent, vector<pair<int, int>> &bridge);
|
void DFS(int u, vector<int> &disc, vector<int> &low, vector<int> &parent, vector<pair<int, int>> &bridge);
|
||||||
int DFSCount(int v, bool visited[]);
|
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, 0);
|
||||||
g1->InsertD(2, 3);
|
g1->InsertD(2, 3);
|
||||||
|
|
||||||
cout << "-- TRANSITIVE CLOSURE --\n\n";
|
cout << "-- PERMUTATIONS --\n\n";
|
||||||
g1->TransitiveClosure();
|
g1->Permute();
|
||||||
|
|
||||||
|
//cout << "-- TRANSITIVE CLOSURE --\n\n";
|
||||||
|
//g1->TransitiveClosure();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user