Cod sursa(job #2018754)

Utilizator Rishab_aroraRishab Arora Rishab_arora Data 5 septembrie 2017 21:16:08
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#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);
    }

    dfs(1);

    while(!s.empty()){
        fout<<s.top()<<' ';
        s.pop();
    }
    return 0;
}