Cod sursa(job #2461729)

Utilizator KataIsache Catalina Kata Data 26 septembrie 2019 08:24:11
Problema Sortare topologica Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
void afisare (int j);
vector <int> M[50002];
int vec[50002];
bool us[50002];
int main()
{
    int n,m,x,y,i,j;
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        M[x].push_back(y);
        vec[y]++;
    }
    for(j=1;j<=n;j++)
        if(!vec[j] && !us[j])
        {for(i=0;i<M[j].size();i++)
             vec[M[j][i]]--;
         fout<<j<<" ";
         us[j]=1;
         afisare(j);}
    return 0;
}
void afisare (int j)
{  int i,k;
   for(i=0;i<M[j].size();i++)
     if(!vec[M[j][i]])
      {if(!us[M[j][i]])
          fout<<M[j][i]<<" ";
       us[M[j][i]]=1;
       for(k=0;k<M[M[j][i]].size();k++)
            vec[M[M[j][i]][k]]--;
       afisare(M[j][i]);
      }
}