Cod sursa(job #1902191)

Utilizator DragosCDragos Corleanca DragosC Data 4 martie 2017 14:06:41
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
using namespace std;
int n,m;
bool a[50001][50001];
void Read()
{
    ifstream f("sortaret.in");
    f>>n>>m;
    int x,y;
    for(int i=1;i<=m;i++)
    {
        f>>x>>y;
        a[x][y]=1;
    }
}

int culoare[50001],p[100],tdesc[100],tfin[100],timp,st[50001],k;

void DFS(int u)
{
    culoare[u]=1;
    //tdesc[u]=++timp;
    for(int v=1;v<=n;v++)
    {
        if(culoare[v]==0&&a[u][v]==1)
        {
            p[v]=u;
            DFS(v);
        }
    }
    culoare[u]=2;
    //tfin[u]=++timp;
    st[++k]=u;
}

void Write()
{
    ofstream g("sortaret.out");
    for(int i=n;i>0;i--)
        g<<st[i]<<" ";
}

int main()
{
    Read();
    for(int u=1;u<=n;u++)
        if(culoare[u]==0)
            DFS(u);
    Write();
    return 0;
}