Pagini recente » Cod sursa (job #2892916) | Cod sursa (job #1322154) | Cod sursa (job #341137) | Cod sursa (job #2111) | Cod sursa (job #1097670)
#include <fstream>
#include <vector>
#define NMAX 50010
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
vector<int> G[NMAX];
bool Used[NMAX];
int O[NMAX],k,N,M;
void Read(){
f>>N>>M; int x,y;
for (int i = 1; i <= M; i++) {
f>>x>>y;
G[x].push_back(y);
}
}
void DFS(int Node)
{
Used[Node] = true;
for (vector<int>::iterator it = G[Node].begin(); it < G[Node].end(); it++) {
if (!Used[*it]) {
DFS(*it);
}
}
O[++k] = Node;
}
void Solve(){
for (int i = 1; i <= N; i++) {
if(!Used[i]){
DFS(i);
}
}
}
void Write(){
for (int i = k; i > 0; i--) {
g<<O[i]<<" ";
}
}
int main(int argc, const char * argv[])
{
Read();
Solve();
Write();
return 0;
}