Cod sursa(job #2377179)

Utilizator sidorencuoanaSidorencu Oana Alexandra sidorencuoana Data 8 martie 2019 22:48:20
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.98 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("date.in");
ofstream g("date.out");

int n,m;
struct Muchii{int x,y,k;}v[100001];
int st[50001],in,sf;

void Citire()
{
     f>>n>>m;
     for(int i=1;i<=m;i++)
     f>>v[i].x>>v[i].y;
}

void Aplica(int a, int b,int j)
{
     st[++sf]=b;
     v[j].k=1;
     for(int i=1;i<=m;i++)
     if(v[i].k==0 && v[i].x==b)
     Aplica(v[i].x,v[i].y,i);

}

void Gen()
{
     in=1; sf=1;
     st[in]=v[1].x;
     while(in<=sf)
     {
          for(int i=1;i<=m;i++)
            if(v[i].x==st[in] && v[i].k==0)
            {
                 Aplica(v[i].x,v[i].y,i);
            }
            in++;
     }
}

/*void Gen()
{
     int r1,r2,in=1,sf=2;
     st[in]=v[1].x;
     st[sf]=v[1].y;
     v[1].k=1;
     r1=st[1];
     r2=st[2];
     while(in<=sf)
     {
          if(r2!=0)
          {
               int ok=1;
               while(ok==1)
               {
                    for(int i=1; ok==1 && i<=m;i++)
                    if(v[i].k==0 && v[i].x==r2)
                    {
                         v[i].k==1;
                         r1=v[i].y;
                         ok=0;
                         st[++sf]=v[i].y;
                    }
                    if(ok==1)
                    ok=0;
               }
               r2=0;
          }
          if(r2==0)
          {int ok=1;
               for(int i=1; ok==1 && i<=m;i++)
               if(v[i].k==0 && v[i].x==r1)
               {g<<v[i].y<<" ";
                    st[++sf]=v[i].y;
                    r2=v[i].y;
                    ok=0;
                    v[i].k=1;
               }
               if(ok==1)
               {
                    in++;
                    r1=st[in];
               }
          }
          else
          r1=st[++in];

     }



}
*/
int main()
{
    Citire();
    Gen();
    g<<endl;
    for(int i=1;i<=n;i++)
    g<<st[i]<<" ";
    return 0;
}