Czy dobrze zaimplementowałem sortowanie topologiczne?

0

Słyszałem na yt że sortując topologicznie można wykryć cykl w grafie jeśli struktura którą użyliśmy ma mniejszy rozmiar niż rozmiar grafu (Wiem że sortowanie topologiczne działa tylko na DAG-ach). Mój algorytm jest na podstawie tej strony https://www.geeksforgeeks.org/topological-sorting/
Czy ja coś źle zaimplementowałem, czy po prostu jest to inna wersja tego algorytmu która nie wykrywa cykli?
Sortuje prawidłowo

#include <bits/stdc++.h>
    
using namespace std;
    
#define ll long long
#define ull unsigned long long
    
#define fi first
#define se second
    
#define FOR(x, y, z) for (int z = x; z < y; z++)
#define FORD(x, y, z) for (int z = x; z > y; z--)

const int MAXN = 10;

vector<vector<int>> graph(MAXN);

vector<int> stacker;
vector<bool> visited(MAXN, false);
void topological_sort_with_DFS(int idx){
    if (visited[idx] == false){
        visited[idx] = true;
        for (auto child : graph[idx])
            topological_sort_with_DFS(child);
        stacker.push_back(idx);
    }
}
    
int main(){
    ios::sync_with_stdio(0);
    cin.tie(nullptr); cout.tie(nullptr);
    
    int n, m, from, to;
    cin >> n >> m;
    
    FOR(0, m, i){
        cin >> from >> to;
        graph[from].push_back(to);
    }

    FOR(1, n+1, i)
        topological_sort_with_DFS(i);
    
    if ((int)stacker.size() == n)
        FORD(n-1, -1, i)
            cout << stacker[i] << " "; 
    else 
        cout << "Jest cykl, smutek, zal i zgrzytanie zebow :(\n";
    
    return 0;
}
    
/*
Graf bez cyklu
5 6
1 2
1 3
3 2
2 4
2 5
4 5

Graf z cyklem
5 6
1 3
3 2
2 4
2 5
4 5
2 1
*/

Tutaj można zwizualizować sobie grafy

1 użytkowników online, w tym zalogowanych: 0, gości: 1