Cod sursa(job #1232223)

Utilizator gapdanPopescu George gapdan Data 22 septembrie 2014 15:06:07
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<cstdio>
#include<algorithm>
#include<vector>
#define pb push_back
using namespace std;
int viz[50001],sol[50001];
int i,n,m,k,x,y;
vector<int>v[50001];
void DFS(int nod)
{
    viz[nod]=1;
    vector<int>::iterator it;
    for (it=v[nod].begin();it!=v[nod].end();++it)
    {
        if (viz[*it]==0) DFS(*it);
    }
    sol[++k]=nod;
}
int cmp(int x,int y)
{
    if (x>y) return 1;
        else return 0;
}
int main()
{
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
    scanf("%d%d",&n,&m);
    for (i=1;i<=n;++i)
    {
        scanf("%d%d",&x,&y);
        v[x].pb(y);
    }
    k=0;
    for(i=1;i<=n;++i)
        sort(v[i].begin(),v[i].end(),cmp);
    for (i=1;i<=n;++i)
        if (viz[i]==0) DFS(i);

    for (i=k;i>=1;--i) printf("%d ",sol[i]);
    return 0;
}