Cod sursa(job #1109544)

Utilizator YoYoxxIftimesei Ioan YoYoxx Data 17 februarie 2014 12:30:14
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include<vector>
#define n_max 50001
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
int g[50001];
int c[50001];
int v[50001];
vector<int>graf[n_max];
int l=0;
void dfs(int nc)
{
    int i,j,p,u,a;
    for(i=0;i<graf[nc].size();i++)
    {
        v[graf[nc][i]]=1;
        g[graf[nc][i]]--;
        if(g[graf[nc][i]]==0)
        {
         c[l]=graf[nc][i];
         l++;
         dfs(graf[nc][i]);
        }
    }

}



int main()
{
    int n,m,i,a,b,grad,j,ok=1;
    in>>n>>m;
    for(i=0;i<m;i++)
    {
        in>>a>>b;
        graf[a].push_back(b);
        g[b]++;
    }
    for(i=1;i<=n;i++)
    {
        if(g[i]==0&&v[i]==0) {c[l]=i;l++;dfs(i);}
    }
     for(i=0;i<l;i++)
    {
        out<<c[i]<<" ";
    }
    return 0;
}