Cod sursa(job #2476987)

Utilizator Simi_bogdanSimion Bogdan Dumitru Simi_bogdan Data 19 octombrie 2019 13:51:23
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.43 kb
/*#include<bits/stdc++.h>
using  namespace std;
ifstream in("autostrazi.in");
ofstream out("autostrazi.out");
#define NMax 100000
vector<int>G[NMax+1];
int viz[NMax+1],n,m;
void citire()
{
    in>>n>>m;
    int i,j;
    for(int k=1;k<=m;k++)
    {
        in>>i>>j;
        G[i].push_back(j);
        G[j].push_back(i);
    }
}
void Dfs(int Node,int Tata)
{
    viz[Node]=1;
    for(int i=0;i<(int )G[Node].size();++i)
    {
        int Vecin=G[Node][i];
        if(!viz[Vecin])
        {
            Dfs(Vecin,Node);
        }
        else
        {
            if(Vecin>Node)
            if(Vecin!=Tata)
            out<<Node<<" "<<Vecin<<'\n';
        }
    }
}
int main()
{
    citire();
    Dfs(1,0);
}
*/
#include<bits/stdc++.h>
using  namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
#define NMax 100000
vector<int>G[NMax+1];
int viz[NMax+1],n,m,tt[NMax+1],k;
void citire()
{
    in>>n>>m;
    int i,j;
    for(int k=1;k<=m;k++)
    {
        in>>i>>j;
        G[i].push_back(j);

    }
}
void Dfs(int Node)
{
    viz[Node]=1;

    for(int i=0;i<(int )G[Node].size();++i)
    {
        int Vecin=G[Node][i];
        if(!viz[Vecin])
        {
            Dfs(Vecin);
        }

    }
    tt[++k]=Node;
}
int main()
{
    citire();
    for(int i=1;i<=n;i++)
        if(!viz[i])
            Dfs(i);
    for(int i=k;i>=1;i--)
        out<<tt[i]<<" ";

}