Cod sursa(job #1128218)

Utilizator bogdanrusRus Bogdan bogdanrus Data 27 februarie 2014 16:07:33
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;

#define NMax 50100

int M, N, Viz[NMax], Grad[NMax];
vector<int> G[NMax];

void sortare () {	

	int i, j, k;
	
	for(i = 1; i<=N; ++i) 
	{
		for(j = 1; j<=N; ++j) 
			if(Grad[j]==0 && Viz[j]==0) 
			{
				Viz[j]=1;
				printf("%d ",i);
				for (k=0; k<G[i].size(); ++k) 
					Grad[G[j][k]]--;
				break;
			}
	}
}


int main (void) {
	
	int p,i,j;
		
    freopen("sortaret.in", "rt", stdin);
    freopen("sortaret.out", "wt", stdout);
	
	scanf("%d %d", &N, &M); 
	
	
	for (p = 1; p<=M; ++p) {
		scanf("%d %d",&i, &j);
		Grad[j]++;
		G[i].push_back(j);
	}
		
	sortare();

return 0;
}