Cod sursa(job #1511380)

Utilizator codi22FMI Condrea Florin codi22 Data 26 octombrie 2015 18:27:19
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <cstdio>
using namespace std;
#include <vector>
int n,m,x,y,Gr[50001],i,j,U[50001],p,t,k;
int main()
{
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
    vector< vector<int> > V;

    scanf("%i %i",&n,&m);
    for (i=0;i<=n;i++)
        {
            vector<int> row;
            V.push_back(row);
            V[i].push_back(0);
        }
     for (i=0;i<m;i++)
    {
        scanf("%i %i",&x,&y);
        V[x][0]++;
        V[x].push_back(y);
        Gr[y]++;
    }
  /*  for (i=1;i<=n;i++)
    {
        for (j=0;j<=V[i][0];j++)
            cout<<V[i][j]<<" ";
        cout<<'\n';
    }*/
    for (i=1;i<=n;i++) if (Gr[i]==0) {t++;U[t]=i;}
   // cout<<p;
    for (i=1;i<=n;i++)
    {
        cout<<U[i]<<" ";
        for (j=1;j<=V[U[i]][0];j++)
        {
           Gr[V[U[i]][j]]--;
            if (Gr[V[U[i]][j]]==0)
            {
                t++;
                U[t]=V[U[i]][j];
            }
        }
    }
}