Cod sursa(job #1673862)

Utilizator sabauandrei98Sabau Andrei sabauandrei98 Data 4 aprilie 2016 10:30:02
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <limits.h>
#include <cmath>
#include <string>
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <vector>
#include <stack>
#include <map>
#include <fstream>
#include <list>
#include <queue>
#include <iomanip>
#include <deque>
#include <set>

using namespace std;

#define pb push_back

#define ff first
#define ss second
#define PI 3.14159265
#define inf (1<<30)
#define mod 1000000007

ifstream f("sortaret.in");
ofstream g("sortaret.out");

vector<int> v[50005], ans;
int seen[50005];

void dfs(int nod)
{
    seen[nod] = 1;

    for(int i = 0; i < v[nod].size(); i++)
        if(!seen[v[nod][i]])
            dfs(v[nod][i]);

    ans.pb(nod);
}

int main()
{
    int n,m;
    f >> n >> m;

    for(int i = 1; i <= n; i++)
        seen[i] = 0;

    for(int i = 1; i <= m; i++)
        {
            int x,y;
            f >> x >> y;
            v[x].pb(y);
        }

    for(int i = 1; i <= n; i++)
        if(!seen[i])
            dfs(i);

    for(int i = ans.size() - 1; i >= 0; i--)
        g<<ans[i]<<" ";


    return 0;
}