Cod sursa(job #230131)

Utilizator vlad_DVlad Dumitriu vlad_D Data 13 decembrie 2008 02:59:18
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>

using namespace std;
vector<int> v[50001];
int G[50001];
int main() {
	ifstream fin("sortaret.in");
	ofstream fout("sortaret.out");
	int n, m;
	fin >> n >> m;
	while (m--) {
		int a, b;
		fin >> a >> b;
		v[a].push_back(b);
		++G[b];
	}
	queue<int> Q;
	int i;
	for (i = 1; i <= n; ++i) if (!G[i]) Q.push(i);
	while (!Q.empty()) {
		int nod = Q.front(); Q.pop();
		fout << nod << " ";
		for (int i = 0; i < v[nod].size(); ++i) {
			G[v[nod][i]]--;
			if (!G[v[nod][i]]) Q.push(v[nod][i]);
			}
		}
	return 0;
}