Cod sursa(job #1128181)

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

#define NMax 50000

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

void sortare () {	

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

}


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

return 0;
}