Cod sursa(job #1455419)

Utilizator Player1Player 1 Player1 Data 27 iunie 2015 23:03:10
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>
#include <vector>
#include <stack>

#define ALB 0
#define GRI 1
#define NEGRU 2
#define NMAX 50005

using namespace std;

vector <int> V[NMAX];
stack <int> S;
int N, M;
bool color[NMAX];

void DFS(int index){
	int j;
	printf("%d ", index);
	color[index] = GRI;
	for (j=0; j<V[index].size(); j++)
		if (color[V[index][j]] == ALB)
			DFS(V[index][j]);

	color[index] = NEGRU;
	//S.push(index);

}

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

	int x, y, i, j;

	scanf("%d %d ", &N, &M);

	for (i=0; i<M; i++){
		scanf("%d %d ", &x, &y);
		V[x].push_back(y);
	}

	for(i=1; i<=N; i++){
		if(color[i] == ALB)
			DFS(i);
	}

	//while(!S.empty()){
	//	printf("%d ", S.top());
	//	S.pop();
	//}

	return 0;
}