Cod sursa(job #2550438)

Utilizator ViAlexVisan Alexandru ViAlex Data 18 februarie 2020 19:56:22
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include<bits/stdc++.h>
using namespace std;

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


vector<int> neighbours[100000];
vector<int> results;
bool visited[100000];
int node_count;


void read(){
	int edge_count,a,b;
	in>>node_count>>edge_count;
	for(int i=0;i<edge_count;i++){
		in>>a>>b;
		neighbours[b-1].push_back(a-1);
	}
}


void dfs(int node){
	visited[node]=true;

	for(int i=0;i<neighbours[node].size();i++){
		int there=neighbours[node][i];
		if(!visited[there])
			dfs(there);
	}
	results.push_back(node+1);
}


void topological_sort(){
	for(int i=0;i<node_count;i++){

		if(!visited[i])
			dfs(i);
	}

	for(int a:results)
		out<<a<<" ";


}

int main(){
	read();
	topological_sort();
}