Cod sursa(job #2373970)

Utilizator tiberiu.bucur17Tiberiu Constantin Emanoil Bucur tiberiu.bucur17 Data 7 martie 2019 16:17:30
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <cstdio>
#include <vector>
using namespace std;
const int Maxn=50001;
int pred[Maxn],q[Maxn-1],sf;
vector <int> v[Maxn];
int main()
{
    FILE *fin,*fout;
    fin=fopen("sortaret.in","r");
    fout=fopen("sortaret.out","w");
    int n,m,x,y;
    fscanf(fin,"%d%d",&n,&m);
    for(int i=0;i<m;i++)
    {
        fscanf(fin,"%d%d",&x,&y);
        v[x].push_back(y);
        pred[y]++;
    }
    for(int i=1;i<=n;i++)
        if(!pred[i])
            q[sf++]=i;
    for(int i=0;i<n;i++)
    {
        x=q[i];
        for(size_t j=0;j<v[x].size();j++)
        {
            y=v[x][j];pred[y]--;
            if(!pred[y])
                q[sf++]=y;
        }
        fprintf(fout,"%d ",x);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}