Cod sursa(job #1132304)

Utilizator omerOmer Cerrahoglu omer Data 2 martie 2014 22:44:01
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include<stdio.h>
#include<queue>
#include<vector>
using namespace std;
FILE *f,*g;
vector<int> veci[50001];
vector<int>::iterator it;
queue<int> good;
int deg[50001];
int main()
{
    int i,j,n,m,k;
    f=fopen("sortaret.in","r");
    g=fopen("sortaret.out","w");
    fscanf(f,"%d%d",&n,&m);
    for(i=1;i<=m;i++)
        {
            fscanf(f,"%d%d",&k,&j);
            deg[j]++;
            veci[k].push_back(j);
        }
    for(i=1;i<=n;i++) if (deg[i]==0) good.push(i);
    while(!good.empty())
        {
            i=good.front();
            fprintf(g,"%d ",i);
            good.pop();
            it=veci[i].begin();
            while(it!=veci[i].end())
                {
                    j=*it;
                    deg[j]--;
                    if (deg[j]==0) good.push(j);
                    it++;
                }
        }





    return 0;
}