Cod sursa(job #1097376)

Utilizator armandpredaPreda Armand armandpreda Data 3 februarie 2014 13:04:51
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <cstdio>

using namespace std;

int pred[1001],succ[1001][1001],q[1001];
int main()
{
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
    int n,m,x,y,i,p=1,u=0;
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;++i)
    {
    	scanf("%d%d",&x,&y);
    	pred[y]++;
    	succ[x][0]++;
    	succ[x][succ[x][0]]=y;
    }
    for(i=1;i<=n;++i)
		if(pred[i]==0)
			q[++u]=i;
    while(p<=u)
		for(i=1,i<=succ[q[p]][0];++i)
			{
			if(pred[succ[q[p]]][i]>0)
				{
					pred[succ[q[p]][i]]--;
					if(pred[succ[q[p]][i]]==0)
						q[++u]=succ[q[p]];
				}
			p++;
			}
	for(i=1;i<=u;++i)
		printf("%d ",q[i]);
    return 0;
}