Cod sursa(job #2034441)

Utilizator xRoALexBirtoiu Alexandru xRoALex Data 7 octombrie 2017 20:13:02
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>
#define N 100000
#include <vector>
#include <queue>
using namespace std;

FILE * f= fopen("sortaret.in","r");
FILE * g= fopen("sortaret.out","w");

int n,m;
vector<int> G[N];
queue<int> v;
int fv[N];

int main()
{
    fscanf(f,"%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        int x,y;
        fscanf(f,"%d%d",&x,&y);
        G[x].push_back(y);
        fv[y]++;
    }
    for(int i=1;i<=n;i++)
        if(fv[i] == 0)
            v.push(i);
    while(!v.empty())
    {
        int x = v.front();
        fprintf(g,"%d ",x);
        v.pop();
        for(auto it: G[x])
            {
            if(fv[it]==1)
                v.push(it);
            fv[it]--;
            }
    }

    return 0;
}