Pagini recente » Borderou de evaluare (job #1427266) | Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2018765)
#include<bits/stdc++.h>
using namespace std;
#define lli long long int
const lli mod=1e9+7;
const lli pINF=LLONG_MAX;
const lli nINF=-LLONG_MAX;
void fast() {std::ios::sync_with_stdio(false);cin.tie(NULL);}
lli power(lli a,lli b){lli ans=1;while(b!=0){ if(b%2==1){ans*=a;}b/=2;a*=a;} return ans;}
lli invmod(lli a) {return pow(a,mod-2);}
#define vi vector<int>
#define vlli vector<lli>
#define pb push_back
#define mp make_pair
#define F first
#define INT 1000000000
#define S second
#define si(n) scanf("%d",&n)
#define sli(n) scanf("%lld",&n)
#define printi(n) printf("%d\n",n)
#define printli(n) printf("%lld\n",n)
#define all(v) v.begin(),v.end()
#define forn(i,n) for(int i=0;i<n;i++)
void print(int a[],int n){for(int i=0;i<n;i++) cout<<a[i]<<" ";}
vi adj[50005];
bool vis[50005];
stack<int> s;
void dfs(int node)
{
vis[node]=true;
for(int i=0;i<adj[node].size();i++){
if(!vis[adj[node][i]]){
dfs(adj[node][i]);
}
}
s.push(node);
}
int main()
{
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n,m,x,y;
fin>>n>>m;
for(int i=0;i<m;i++){
fin>>x>>y;
adj[x].pb(y);
}
for(int i=1;i<=n;i++)
if(!vis[i]) dfs(i);
while(!s.empty()){
fout<<s.top()<<' ';
s.pop();
}
return 0;
}