Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Поиск циклов обходом в глубину (dfs) через матрицу смежности в ориентированном графе
- /*p_AdjacencyMatrix - указатель на матрицу смежности
- countOfEdge - кол-во вершин, countOfCycles - кол-во циклов
- usedEdge[] - здесь храним цвета для вершин*/
- void dfs(int vertice, int** p_AdjacencyMatrix, unsigned short& countOfEdge, int &countOfCycles)
- {
- int i;
- usedEdge[vertice] = 1; //Окрашиваем вершину в серый
- for (i = 0; i < countOfEdge; i++) {
- if (p_AdjacencyMatrix[vertice][i] && !usedEdge[i]) {
- dfs(i, p_AdjacencyMatrix, countOfEdge, countOfCycles);
- }
- if (p_AdjacencyMatrix[vertice][i] && (usedEdge[i] == 1)) {
- countOfCycles++;
- }
- }
- usedEdge[vertice] = 2; //Окрашиваем в чёрный
- }
- ///
- int countOfCycles = 0;
- for (int i = 0; i < countOfEdge; i++)
- if (!usedEdge[i]) dfs(i, p_AdjacencyMatrix, countOfEdge, countOfCycles);
- cout <<"\n\t"<< countOfCycles;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement