Cod sursa(job #1437051)

Utilizator pas.andreiPopovici Andrei-Sorin pas.andrei Data 16 mai 2015 19:49:56
Problema Sortare topologica Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
/*
ID: pas.and1
LANG: C++11
PROG: holstein
*/
#include <iostream>
#include <fstream>
#include <cstring>
#include <algorithm>
#include <string>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <iterator>

using namespace std;

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
//ifstream fin("fisier.in");
//ofstream fout("fisier.out");

int n, m, nr;
vector<int> v[100];
int viz[100], postordine[100];

void citire();
void DFS(int x);

int main() {
	int i, total, nrNivel;
	unsigned int j;

	citire();
	
	for (i = 1; i <= n; ++i)
		if (viz[i] == 0)
			DFS(i);

	for (i = n; i > 0; --i)
		fout << postordine[i] << ' ';

	return 0;
}

void DFS(int x) {
	int i;

	viz[x] = 1;
	for (i = 0; i < v[x].size(); ++i) {
		if (viz[v[x][i]] == 0)
			DFS(v[x][i]);
	}
	postordine[++nr] = x;
}

void citire() {
	int a, b;

	fin >> n >> m;

	for (int i = 0; i < m; ++i) {
		fin >> a >> b;
		v[a].push_back(b);
	}
}