Cod sursa(job #2608488)

Utilizator cezarinfoTulceanu Cezar cezarinfo Data 1 mai 2020 13:56:25
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include<cstdio>
#include<vector>
#include<deque>
using namespace std;
FILE*in=fopen("sortaret.in","r");
FILE*out=fopen("sortaret.out","w");
struct nod
{
    int n;
    bool b;
};
nod no;
vector<nod> v[50002];
deque<int> d;
int n,m,i,x,y,vec;
bool t[50002];
void DFS(int a)
{
    t[a]=1;
    for(int j=0;j<v[a].size();j++)
    {
        nod vec=v[a][j];
        if(t[vec.n]==0)
        {
            if(vec.b==0)
            {
                d.push_back(vec.n);
            }
            else
            {
                d.push_front(vec.n);
            }
            DFS(vec.n);
        }
    }
}
int main()
{
    fscanf(in,"%d%d",&n,&m);
    for(i=1;i<=m;i++)
    {
        fscanf(in,"%d%d",&x,&y);
        no.n=y;
        no.b=0;
        v[x].push_back(no);
        no.n=x;
        no.b=1;
        v[y].push_back(no);
    }
    for(i=1;i<=n;i++)
    {
        if(t[i]==0)
        {
            d.push_back(i);
           DFS(i);
        }
    }
    while(!d.empty())
    {
        fprintf(out,"%d ",d.front());
        d.pop_front();
    }
}