Pagini recente » Istoria paginii preoni-2007/runda-finala/poze/evaluare | Istoria paginii runda/qwdqfqw/clasament | Istoria paginii runda/cali_ma_incurca/clasament | oji2014 | Cod sursa (job #2691566)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
unsigned int N,M,x,y;
vector< vector<unsigned int> > adj;
vector<unsigned int> sortare_topo;
vector<char> visited;
void Read(){
fin >> N >> M; adj = vector< vector<unsigned int> >(N+1);//aloc N linii
visited = vector<char>(N+1);
while(fin >> x >> y){
adj[x].push_back(y);
}
}
void DFS(unsigned int nod){
visited[nod] = '1';
for(int n = 0; n < adj[nod].size(); n++)
if(visited[n]=='0')
DFS(n);
//inserez in lista
sortare_topo.push_back(nod);
}
void ConstructSort(){
for(int i = 1; i <= N; i++)
visited[i] = '0';
for(int i = 1; i <= N; i++){
if(visited[i] == '0')
DFS(i);
}
}
void Display_Sort(){
for(int i = 0; i < sortare_topo.size(); i++)
cout << sortare_topo[i] << " ";
}
int main(){
Read();
ConstructSort();
Display_Sort();
/*for(int i = 1; i <= N; i++){
for(int j = 0; j < adj[i].size(); j++){
cout << adj[i][j] << " ";
}
cout << endl;
}*/
return 0;
}