Cod sursa(job #1303512)

Utilizator danyro364Savu Ioan Daniel danyro364 Data 28 decembrie 2014 00:56:18
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
//#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
#define nmax 50001
using namespace std;
FILE *f=fopen("sortaret.in","r"),*g=fopen("sortaret.out","w");
int gi[nmax];
int main()
{
    vector <int> l[nmax];
    queue <int> c;
    int i,j,n,m,x,y;
    fscanf(f,"%d %d",&n,&m);
    for(i=1;i<=m;i++)
    {
        fscanf(f,"%d %d",&x,&y);
        l[x].push_back(y);
        gi[y]++;
    }
    fclose(f);
    for(i=1;i<=n;i++)
        if(!gi[i])
        c.push(i);
    while(!c.empty())
    {
        x=c.front();
        c.pop();
        fprintf(g,"%d ",x);
        for(i=0;i<l[x].size();i++)
        {
            gi[l[x][i]]--;
            if(!gi[l[x][i]])
                c.push(l[x][i]);
        }
    }
    fclose(g);
    return 0;
}