Cod sursa(job #1704108)

Utilizator alexalbu95Albu Alexandru alexalbu95 Data 18 mai 2016 01:24:09
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream f("sortaret.in");
ofstream g("sortaret.out");

vector<int> v[50005];
int nr;
bool visited[50005];
int dist[50005];

void read(int &N, int &M) {

	int x, y;
	f >> N >> M;
	for (int i = 0; i < M; ++i){
		f >> x >> y;
		v[x].push_back(y);
	}
}

void dfs(int start) {

	if (visited[start] == true) {
		return;
	}
	visited[start] = true;

	for (auto &x : v[start]) {
		if (visited[x] == false) {
			dfs(x);
		}
	}

	dist[++nr] = start;
}

int main()
{
	int N, M;
	read(N, M);

	for (int i = 1; i <= N; ++i) {
		if (visited[i] == false) {
			dfs(i);
		}
	}

	for (int i = nr; i >= 1; --i) {
		g << dist[i] << " ";
	}

    return 0;
}