Pagini recente » Cod sursa (job #2283565) | Cod sursa (job #2414357) | Cod sursa (job #669897) | Cod sursa (job #1987733) | Cod sursa (job #1139137)
#include <iostream>
#include <fstream>
#include <list>
#include <vector>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
typedef list<int> list_of_integers;
list_of_integers order;
int tick=0;
void dfs(int k, vector<list_of_integers> &nodes, vector<int> &ticks)
{
//cout<<k<<endl;
if(ticks.at(k)) return;
order.push_front(k);
ticks.at(k) = ++tick;
for(list<int>::iterator it = nodes.at(k).begin();it!=nodes.at(k).end();it++)
{
if(!ticks.at((*it))) dfs((*it),nodes,ticks);
}
}
int main()
{
int n,m;
fin>>n>>m;
vector<list_of_integers> nodes (n+2);
vector<int> ticks(n+2,0);
for(int i=1;i<=m;i++)
{
int x,y;
fin>>x>>y;
nodes.at(x).push_front(y);
}
for(int i=1;i<=n;i++)
dfs(i,nodes,ticks);
for(list_of_integers::iterator it = order.begin();it!=order.end();it++)
fout<<(*it)<<" ";
}