Cod sursa(job #2207297)

Utilizator cyborgGavrila Alex cyborg Data 25 mai 2018 14:44:04
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>

using namespace std;

void dfs(vector<vector<int> > &v,vector<int> &disc,stack<int> &st,int i) {
	disc[i] = 1;
	for(int j=0;j<v[i].size();j++)
		if (!disc[v[i][j]]) {
			dfs(v, disc, st,v[i][j]);
		}
	st.push(i);


}



int main() {
	int n, a,b;
	ifstream f("sortaret.in");
	ofstream f1("sortaret.out");
	f >> n >> a;
	vector<vector<int> > graf(n);
	vector<int> disc(n,0);
	stack<int> s;
	while (f >> a >> b) {
		graf[a - 1].push_back(b - 1);
	}
	for(int i=0;i<n;i++)
		if(!disc[i])
			dfs(graf, disc, s, i);
	while(!s.empty()){
		f1 << s.top()+1<<" ";
		s.pop();
	}
	return 0;

}