Cod sursa(job #1219071)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 13 august 2014 12:56:27
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
 vector <int> vec[50005];
 queue <int> q;
  int n,m,gr[50005],sol[50005],k,nod;
int main()
{ int i,j,x,y,nod;
    f>>n>>m;

    for(i=1;i<=m;i++)
     {  f>>x>>y;
        vec[y].push_back(x);
        gr[x]++;
     }

     for(i=1;i<=n;i++)
      if (!gr[i]) q.push(i);

     k=n+1;

     while(!q.empty())
     { nod=q.front(); q.pop();
        k--; sol[k]=nod;

        for(i=0;i<vec[nod].size();i++)
         {gr[vec[nod][i]]--; if (!gr[vec[nod][i]]) q.push(vec[nod][i]);}
     }

     for(i=1;i<=n;i++)
      g<<sol[i]<<" ";
    return 0;
}