Pagini recente » Cod sursa (job #336542) | Cod sursa (job #2519811) | Cod sursa (job #76225) | Cod sursa (job #467310) | Cod sursa (job #1367304)
#include <iostream>
#include <fstream>
#include <list>
#include <vector>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int u, v;
int n, m;
int state[50005];
list<int> s;
vector< list<int> > muchii; //liste de adiacenta
void DF(int nod);
void topologicSort() {
for(int i = 1; i <= n; i++)
if(!state[i])
DF(i);
}
void DF(int nod){
state[nod] = 1;
for(list<int>::iterator it = muchii[nod].begin(); it != muchii[nod].end(); it++)
if(state[*it] == 0)
DF(*it);
s.push_front(nod);
}
int main()
{
fin >> n >> m;
muchii = vector< list<int> >(n+1);
for(int i = 0;i < m; i++){
fin >> u >> v;
muchii[u].push_front(v);
//added in reverse order!
}
topologicSort();
for(list<int>::iterator it = s.begin(); it != s.end(); it++)
fout << *it << ' ';
fout << endl;
return 0;
}