Pagini recente » Cod sursa (job #2253971) | Cod sursa (job #2052013) | Cod sursa (job #2550045) | Istoria paginii runda/simulare-cartita-42 | Cod sursa (job #1936328)
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
#include <cmath>
#define MaxN 50005
using namespace std;
FILE*IN,*OUT;
int N,M,Sort[MaxN],X,Y,Size=0;
bool found[MaxN];
vector <int>Graph[MaxN];
void DFS(int node)
{
found[node]=true;
for(int i=0;i<Graph[node].size();i++)
if(!found[Graph[node][i]])DFS(Graph[node][i]);
Sort[++Size]=node;
}
int main()
{
IN=fopen("sortaret.in","r");
OUT=fopen("sortaret.out","w");
fscanf(IN,"%d%d",&N,&M);
for(int i=1;i<=M;i++)
{
fscanf(IN,"%d%d",&X,&Y);
Graph[X].push_back(Y);
}
for(int i=1;i<=N;i++)
if(!found[i])
DFS(i);
for(int i=N;i>0;i--)
fprintf(OUT,"%d ",Sort[i]);
return 0;
}