Pagini recente » Cod sursa (job #2771406) | Cod sursa (job #1988255) | Cod sursa (job #475011) | Cod sursa (job #3237782) | Cod sursa (job #371803)
Cod sursa(job #371803)
#include <fstream>
#include <vector>
#include <stack>
#include <cstring>
#define MAXN 50010
using namespace std;
ifstream fi("sortaret.in");
ofstream fo("sortaret.out");
int N,M;
vector<int> G[MAXN];
stack<int> S;
int used[MAXN];
void get_input(){
fi>>N>>M;
int x,y;
for (int i=1;i<=M;++i){
fi>>x>>y;
G[x].push_back(y);
}
fi.close();
}
void DFS(int nod){
vector<int>::iterator it;
used[nod]=1;
for (it=G[nod].begin();it!=G[nod].end();++it)
if (!used[*it]) DFS(*it);
S.push(nod);
}
void get_output(){
while (!S.empty()){
fo<<S.top()<<" ";
S.pop();
}
fo<<"\n";
fo.close();
}
int main(){
get_input();
memset(used,0,sizeof(used));
for (int i=1;i<=N;++i)
if (!used[i]) DFS(i);
get_output();
return 0;
}