Cod sursa(job #2499763)

Utilizator eusebiu_alexandruMorar Eusebiu eusebiu_alexandru Data 26 noiembrie 2019 18:35:17
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include<fstream>
#include<algorithm>
#define nmax 50004
#define mmax 100003
using namespace std;
ifstream f ("sortaret.in");
ofstream g ("sortaret.out");
struct ele
{
    int indice,valoare;
}v[nmax];
bool cmp (ele a,ele b)
{
       return a.valoare>b.valoare;
}
bool fr[nmax];
int n,i,j,m,star[nmax],t[3][mmax],k,coloana,rezultat,stiva[nmax],element,varf,vecin,ordine[nmax],cnt;
int main()
{
  f>>n>>m;
  while(m)
  {
      m--;
      f>>i>>j;
      k++;
      t[0][k]=j;
      t[1][k]=star[i];
      star[i]=k;
      k++;
      t[0][k]=i;
      t[1][k]=star[j];
      star[j]=k;
  }
  for(i=1;i<=n;i++)
  {
      if(fr[i]==0)
      {
          stiva[++varf]=i;
          fr[i]=1;
          while(varf)
          {
          element=stiva[varf];
          coloana=star[element];
          int ok=0;
          while(coloana && ok==0)
          {
              vecin=t[0][coloana];
              if(fr[vecin]==0)
              {
                  stiva[++varf]=vecin,ok=1,fr[vecin]=1;
              }
              coloana=t[1][coloana];
          }
           if(ok==0)
               ordine[++cnt]=element,varf--;
          }
      }
  }
 for(i=cnt;i>=1;i--)
        g<<ordine[i]<<" ";
}