Cod sursa(job #423980)

Utilizator c_iulyanCretu Iulian c_iulyan Data 24 martie 2010 15:06:12
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;

long n,gr[50001],m;
vector <long> G[50001];
queue <long> Q;

void rd()
{
scanf("%ld%ld",&n,&m);
long i,x,y;
for(i=1;i<=m;i++)
	{
	scanf("%ld%ld",&x,&y);
	G[x].push_back(y);	
	gr[y]++;
	}

for(i=1;i<=n;i++)
	if(!gr[i])
		Q.push(i);
}

void go()
{
for(long i=1;i<=n;i++)
	{
	long x=Q.front();
	Q.pop();
	printf("%ld ",x);
	
	for(long j=0;j<G[x].size();j++)
		{
		gr[G[x][j]]--;
		if(!gr[G[x][j]])
			Q.push(G[x][j]);
		}	
	}
}

int main()
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);

rd();
go();

return 0;
}