Cod sursa(job #2390706)

Utilizator NaritaandreiCNAINarita Andrei NaritaandreiCNAI Data 28 martie 2019 11:43:18
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
FILE *f,*g;
struct graf
{
    int node,next;
}v[100002];
int start[50002],fr[50002];
int n,m;
void read()
{   int x,y,k=0;
    fscanf(f,"%d %d",&n,&m);
    for(int i=1; i<=m; i++)
    {
        fscanf(f,"%d %d",&x,&y);
        v[++k].node=y;
        v[k].next=start[x];
        start[x]=k;
        fr[y]++;
    }
}
void solve()
{   int ok=1;
    while(ok)
    {   ok=0;
        for(int i=1; i<=n;i++)
        {
            if(!fr[i])
            {   ok=1;
                fprintf(g,"%d ",i);
                for(int j=start[i]; j; j=v[j].next)
                {
                    fr[v[j].node]--;
                }
                fr[i]=-1;
            }
        }
    }
}
int main()
{   f = fopen("sortaret.in", "r");
    g = fopen("sortaret.out", "w");
    read();
    solve();
    //write();
    fclose(f);
    fclose(g);
    return 0;
}