Cod sursa(job #1909008)

Utilizator dragos_vecerdeaVecerdea Dragos dragos_vecerdea Data 7 martie 2017 11:22:01
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <stdio.h>
#include <stack>
#include <vector>
#include <algorithm>
using namespace std;
struct pereche
{
    int niv, nodd;
};
int vf=1;
pereche info[50001];
int stiva[50001];
char marcat[50001];
vector <int> muchie[50001];
FILE *fin = fopen("sortaret.in", "r");
FILE *fout= fopen("sortaret.out", "w");
void dfs(int nod)
{
    marcat[nod]=1;
    for(auto node : muchie[nod])
    {
        if(marcat[node]==0)
        {
            dfs(node);
        }
    }
    stiva[vf++]=nod;
}
int main()
{
    int n,m;
    fscanf(fin, "%d%d", &n ,&m);
    for(int i=1;i<=m;i++)
    {
        int x,y;
        fscanf(fin, "%d%d", &x, &y);
        muchie[x].push_back(y);
    }
    for(int i=1;i<=n;i++)
    {
        if(marcat[i]==0)
        {
            dfs(i);
        }
    }
    for(int i=vf-1;i>=1;i--)
    {
        fprintf(fout, "%d ", stiva[i]);
    }
    return 0;
}