Pagini recente » Cod sursa (job #3210531) | Cod sursa (job #2617420) | Cod sursa (job #797609) | Cod sursa (job #2808875) | Cod sursa (job #1564915)
#include <cstdio>
#include <vector>
#include <deque>
#include <bitset>
#include <algorithm>
using namespace std;
FILE * iFile;
FILE * oFile;
int nodes, edges, start;
bitset<100002> visited;
vector <int> vertices[100002];
vector <int> answer;
deque <int> que;
void read()
{
int i, source, destination;
fscanf(iFile, "%d %d", &nodes, &edges);
fscanf(iFile, "%d %d", &source, &destination);
start = source;
vertices[source].push_back(destination);
for(i = 1; i < edges; i++)
{
fscanf(iFile, "%d %d", &source, &destination);
vertices[source].push_back(destination);
}
}
void dfs(int start_node)
{
int i;
visited[start_node] = 1;
for(i=0;i<vertices[start_node].size();i++)
{
if(visited[vertices[start_node][i]] == 0)
{
dfs(vertices[start_node][i]);
}
}
answer.push_back(start_node);
}
int main()
{
iFile = fopen("sortaret.in", "r");
oFile = fopen("sortaret.out", "w");
read();
for(int i=1;i<=nodes;i++)
if(visited[i] == 0)
dfs(i);
reverse(answer.begin(), answer.end());
for(int i =0;i < answer.size(); i++)
fprintf(oFile, "%d ", answer[i]);
return 0;
}