Cod sursa(job #1005385)

Utilizator hevelebalazshevele balazs hevelebalazs Data 4 octombrie 2013 22:54:42
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
#include <vector>
#define fr(i,a,b) for(int i=a;i<b;++i)
#define N 50000
using namespace std;
vector<int>edges[N];
bool col[N];
int t=0;
int q[N],qlast;
void dfs(int i){
    col[i]=true;
    fr(v,0,(int)edges[i].size()){
        int id=edges[i][v];
        if(!col[id]) dfs(id);
        }
    --qlast;
    q[qlast]=i;
    }
int main(){
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
    int n,m;
    scanf("%i%i",&n,&m);
    fr(i,0,m){
        int a,b;
        scanf("%i%i",&a,&b);
        --a;--b;
        edges[a].push_back(b);
        }
    qlast=n;
    fr(i,0,n) if(!col[i]) dfs(i);
    fr(i,0,n) printf("%i ",q[i]+1);
    return 0;
    }