Cod sursa(job #2040353)

Utilizator andy1207Cioltan Andrei andy1207 Data 15 octombrie 2017 18:19:54
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<cstdio>
#include<vector>

const int NMAX=50000;
const int MMAX=100000;

std::vector <int> v[NMAX];
int c[NMAX+1];
int vec[NMAX+1];

int main()
{
 freopen("sortaret.in","r",stdin);
 freopen("sortaret.out","w",stdout);
 int n,m;
 scanf("%d %d ",&n,&m);
 for(int i=1;i<=m;i++)
    {
     int x,y;
     scanf("%d %d ",&x,&y);
     v[x].push_back(y);
     vec[y]++;
    }
 int nr=0;
 for(int i=1;i<=n;i++)
    {
     if(vec[i]==0)
        c[++nr]=i;
    }
 for(int i=1;i<=n;i++)
    {
     int q=c[i];
     for(std::vector <int>::iterator j=v[q].begin();j!=v[q].end();j++)
        {
         vec[*j]--;
         if(vec[*j]==0)
            c[++nr]=*j;
        }
    }
 for(int i=1;i<=n;i++)
    {
     printf("%d ",c[i]);
    }
return 0;
}