Cod sursa(job #2557500)

Utilizator ana_maria_zotaZota Ana Maria ana_maria_zota Data 25 februarie 2020 20:42:33
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.51 kb
 #include <fstream>
 #include <iostream>
 #include <vector>
 #include <stack>
 using namespace std;
 int n,m,x,y,viz[50005];
 vector<int>graf[50005];
 stack<int>st;
 ifstream fin("sortaret.in");
 ofstream fout("sortaret.out");
 void sortare(int x)
 {
     for(auto &v:graf[x])
     {
         if(viz[v]==0)
         {
             viz[v]=1;
             sortare(v);
         }
     }
     st.push(x);
 }
 int main( ) {
     fin>>n>>m;
     for(int i=0;i<m;i++)
     {
         fin>>x>>y;
         graf[x].push_back(y);
         
     }
     for(int i=1;i<=n;i++)
     {
         if(viz[i]==0)
         {
             sortare(i);
             viz[i]=1;
         }
     }
    while(!st.empty())
     {
         fout<<st.top()<<" ";
         st.pop();
     }
     return 0;
 }

/*
#include <cstdio>
#include <vector>
#include <stack>
 
using namespace std;
 
vector <int> graph[50005];
stack <int> s;
 
int n, m, x, y;
bool viz[50005];
 
void filll(int x)
{
    for(auto &v:graph[x])
    {
        if(viz[v] == 0)
        {
            viz[v]=1;
            filll(v);
        }
    }
    s.push(x);
}
int main()
{
    freopen("sortaret.in", "r", stdin);
   //freopen("sortaret.out", "w", stdout);
    
    scanf("%d %d", &n, &m);
    
    for(int i=1; i<=m; i++)
    {
        scanf("%d %d", &x, &y);
        graph[x].push_back(y);
    }
    for(int i=1; i<=n; i++)
        if(viz[i]==0)
        {
            filll(i);
            viz[i]=1;
        }
    while(!s.empty())
    {
        printf("%d ", s.top());
        s.pop();
    }
    return 0;
}
*/