Cod sursa(job #2144565)

Utilizator mirupetPetcan Miruna mirupet Data 26 februarie 2018 20:12:39
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<cstdio>
#include<vector>
using namespace std;

FILE *fin = freopen("sortaret.in", "r", stdin);
FILE *fout = freopen("sortaret.out", "w", stdout);

const int NMax = 50001;
int N, M, P;
int x, y;
int w[NMax];
bool visit[NMax];
vector < int > v[NMax];

void DFS(int node){

    visit[node] = 1;

    vector < int > :: iterator it;
    for (it = v[node].begin(); it != v[node].end(); it++)
        if (!visit[*it])
            DFS(*it);

    w[++ P] = node;
}
int main(){

    scanf("%d%d", &N, &M);

    for (int i = 1; i <= M; i++){

        scanf("%d%d", &x, &y);
        v[x].push_back(y);
    }

    for (int i = 1; i <= N; i++)
        if (!visit[i])
            DFS(i);

    for (int i = P; i; i--)
        printf("%d ", w[i]);
}