Cod sursa(job #2066682)

Utilizator AndreidgDragomir Andrei Valentin Andreidg Data 15 noiembrie 2017 12:04:25
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
const int N = 50005;
const int M = 100005;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int n,m;
bool parinte[N];
bool viz[N];
vector <int> V[N];
queue  <int> q;
void dfs(int pc)
{
    viz[pc] = 1;
    q.push(pc);
    for(int i = 0; i< V[pc].size(); i++)
    {
        int nx = V[pc][i];
        if(viz[nx] == 0)
        {
            dfs(nx);
        }
    }
    //g<<pc<<" ";

}
int main()
{
    f>>n>>m;
    for(int i = 1; i<= n; i++)
    {
        int x,y;
        f>>x>>y;
        V[x].push_back(y);
        parinte[y] = 1;
    }
    for(int i = 1; i<= n; i++)
    {
        if(parinte[i] == 0)
        {
            dfs(i);
        }
    }
    //g<<"\n\n";
    while(!q.empty())
    {
        g<<q.front()<<" ";
        q.pop();
    }
    f.close();
    g.close();
    return 0;
}