Pagini recente » Cod sursa (job #2580275) | Cod sursa (job #1246897) | Cod sursa (job #2027214) | Cod sursa (job #2591934) | Cod sursa (job #1825701)
#include <stdio.h>
#include <vector>
#include <cctype>
#include <string.h>
#define BUF_SIZE 1<<17
char buffer[BUF_SIZE];
int pbuf = BUF_SIZE;
FILE *fi, *fo;
inline char nextch(){
if(pbuf == BUF_SIZE){
fread(buffer, BUF_SIZE, 1, fi);
pbuf=0;
}
return buffer[pbuf++];
}
inline int nextnum(){
int a = 0;
char c = nextch();
while(!isdigit(c))
c = nextch();
while(isdigit(c)){
a = a*10+c-'0';
c = nextch();
}
return a;
}
#define MAXN 50000
std::vector < int > G[1 + MAXN];
int viz[1 + MAXN];
int st[1 + MAXN], ind;
void dfs(int node){
if(viz[node]) return ;
viz[node] = 1;
for(auto y: G[node])
dfs(y);
st[ind++] = node;
}
int main(){
fi = fopen("sortaret.in","r");
fo = fopen("sortaret.out","w");
int n = nextnum(), m = nextnum();
for(int i = 0; i < m; i++){
int x = nextnum(), y = nextnum();
G[x].push_back(y);
}
for(int i = 1; i <=n; i++)
dfs(i);
for(int i = ind- 1; i > 0; i--)
fprintf(fo,"%d ", st[i]);
fclose(fi);
fclose(fo);
return 0;
}