Cod sursa(job #1250895)

Utilizator rebound212Mihnea Savu rebound212 Data 28 octombrie 2014 18:29:34
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <vector>
#include <cstdio>
#define PB push_back

using namespace std;
vector <int> G[50001];
bool sel[50001];
int  sol[50001];
int n,m,x,y,i;
void dfs(int x)
{
     sel[x]=1;
     for( vector <int> :: iterator it=G[x].begin(); it!=G[x].end();it++)
     {
         if(!sel[*it]) dfs(*it);
     }
     sol[++sol[0]]=x;
}
int main()
{
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
   scanf("%d %d",&n,&m);
   for(i=1;i<=m;i++)
   {
       scanf("%d %d",&x,&y);
       G[x].PB(y);
   }
   for(i=1;i<=n;i++)
   {
       if(!sel[i]) dfs(i);
       sel[i]=1;
   }

   for(i=sol[0];i>=1;i--)
   {
       printf("%d ",sol[i]);
   }


    return 0;
}