Cod sursa(job #871765)

Utilizator andreas_mihAndreas Mihaloianis andreas_mih Data 5 februarie 2013 10:50:43
Problema Sortare topologica Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<stdio.h>
#include<vector>
using namespace std;
FILE*in=fopen("sortaret.in","r");
FILE*out=fopen("sortaret.out","w");
vector<int> v[50001];
bool viz[50001];
int noduri,muchii,grad[50001];
int main()
{
    fscanf(in,"%d%d",&noduri,&muchii);
    for(int i=1;i<muchii;++i)
    {
        int data1,data2;
        fscanf(in,"%d%d",&data1,&data2);
        v[data1].push_back(data2);
        grad[data2]++;
    }
    int noduriAJ=noduri;
    while(noduriAJ)
    for(int i=1;i<=noduri;++i)
    {
        if(!grad[i] && !viz[i])
        {
            fprintf(out,"%d ",i);
            viz[i]=true;
            noduriAJ--;
            for(int j=0;j<(int)v[i].size();++j)
                grad[v[i][j]]--;
        }
    }

    fclose(in);
    fclose(out);
}