Pagini recente » Cod sursa (job #99727) | Cod sursa (job #2358695) | Cod sursa (job #2769954) | Cod sursa (job #1932850) | Cod sursa (job #1333081)
#include<stdio.h>
#include<vector>
using namespace std;
FILE *in, *out;
//definitions
#define pb push_back
//constants
const int sz = (int) 5e4+1;
//variables
int nodes, edges;
int node1, node2;
vector<int> graph[sz];
bool visited[sz];
int postorder[sz];
int pos;
//functions
void dfs(int node);
int main(void)
{
in = fopen("sortaret.in","rt");
out = fopen("sortaret.out","wt");
fscanf(in, "%d%d", &nodes, &edges);
while( edges--)
{
fscanf(in, "%d%d", &node1, &node2);
graph[node1].pb(node2);
}
for(int i=1; i<=nodes; ++i)
if(!visited[i])
dfs(i);
for(int i=nodes; i>=1; --i)
fprintf(out,"%d ", postorder[i]);
fclose(in);
fclose(out);
return 0;
}
void dfs(int node)
{
visited[node] = true;
vector<int> :: iterator it, end = graph[node].end();
for( it= graph[node].begin(); it!=end; ++it)
{
if(!visited[*it])
dfs(*it);
}
postorder[++pos] = node;
}