Cod sursa(job #3250872)

Utilizator Bogdan345Marius Mihalache Bogdan345 Data 23 octombrie 2024 22:58:44
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("sortaret.in");
ofstream cout("sortaret.out");
vector<int>gradInt,folosit;
vector<vector<int>>gr;
void DFS(int nod){
    for(int i=0;i<gr[nod].size();i++){
       gradInt[gr[nod][i]]--;
       if(gradInt[gr[nod][i]]==0 && folosit[gr[nod][i]]==1){
            cout<<gr[nod][i]<<" ";
            folosit[gr[nod][i]]=-1;
            DFS(gr[nod][i]);
       }
    }
    }
int main(){
    int n,m,nod1,nod2;
    cin>>n>>m;
    gr.resize(n+1);
    folosit.resize(n+1,1);
    gradInt.resize(n+1);
    for(int i=1;i<=m;i++){
        cin>>nod1>>nod2;
        gr[nod1].push_back(nod2);
        gradInt[nod2]++;
    }
    for(int i=1;i<=n;i++){
        if(gradInt[i]==0 && folosit[i]==1){
            cout<<i<<" ";
           folosit[i]=-1;
            DFS(i);
        }
    }
    gr.clear();
    gradInt.clear();
    folosit.clear();
}