Cod sursa(job #917869)

Utilizator lehman97Dimulescu David lehman97 Data 18 martie 2013 13:39:44
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <stdio.h>
#include <bitset>

using namespace std;

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


int nr,i,n,m,p[50006];
bitset<30006>viz;
bitset<30006>a[30006];


void citire(int m)
{
    int i,x,y;
    for(i=1;i<=m;i++)
    {
        fscanf(f,"%d%d",&x,&y);
        a[x][y]=1;
    }
}

void df(int i)
{
    int j;
    viz[i]=1;
    for(j=1;j<=n;j++)
    if(viz[j]==0&& a[i][j]==1)
    df(j);
    p[++nr]=i;
}

void solve()
{
    int i;
    for(i=1;i<=n;i++)
    if(viz[i]==0)df(i);
    for(i=n;i>=1;i--)
    fprintf(g,"%d ",p[i]);
}

int main()
{
    fscanf(f,"%d%d",&n,&m);
    citire(m);
    nr=0;
    solve();

    fclose(g);
    return 0;
}