Cod sursa(job #2805814)

Utilizator namesurname01Name Surname namesurname01 Data 22 noiembrie 2021 02:01:45
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <cstdio>

using namespace std;
FILE* f, * g;

int start[50002], t[2][100002], n;
bool viz[50002];
int v[50002];

void dfs(int nod)
{
    int vecin, poz;
    viz[nod] = 1;
    poz = start[nod];
    while (poz)
    {
        vecin = t[0][poz];
        if (!viz[vecin])
            dfs(vecin);
        poz = t[1][poz];
    }
    v[++v[0]] = nod;
}
int main()
{
    f = fopen("sortaret.in", "r");
    g = fopen("sortaret.out", "w");
    int m, x, y, k = 0;
    fscanf(f, "%d %d", &n, &m);
    for (int i = 1;i <= m;++i)
    {
        fscanf(f, "%d %d", &x, &y);
        t[0][++k] = y;
        t[1][k] = start[x];
        start[x] = k;
    }
    for (int i = 1;i <= n;++i)
        if (!viz[i])
            dfs(i);
    for (int i = v[0];i >= 1;--i)
        fprintf(g, "%d ", v[i]);
    fclose(f);
    fclose(g);
    return 0;
}