Cod sursa(job #2320950)

Utilizator rares1012Rares Cautis rares1012 Data 15 ianuarie 2019 14:11:32
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>

std::vector<int> v[50000];

int af[50000];

int vis[50000];

int q=0;

void dfs(int k){
    int i=0;
    vis[k]=1;
    while(i<v[k].size()){
        if(vis[v[k][i]]==0){
            dfs(v[k][i]);
        }
        i++;
    }
    af[q]=k;
    q++;
}

int main()
{
    int n,m,i,a,b;
    FILE*fi,*fo;
    fi=fopen("sortaret.in","r");
    fo=fopen("sortaret.out","w");
    fscanf(fi,"%d%d",&n,&m);
    for(i=0;i<m;i++){
        fscanf(fi,"%d%d",&a,&b);
        a--;
        b--;
        v[b].push_back(a);
    }
    for(i=0;i<n;i++){
        if(vis[i]==0){
            dfs(i);
        }
    }
    for(i=0;i<n;i++){
        fprintf(fo,"%d ",af[i]+1);
    }
    fclose(fi);
    fclose(fo);
    return 0;
}