Cod sursa(job #124926)

Utilizator sigridMaria Stanciu sigrid Data 20 ianuarie 2008 10:17:47
Problema Strazi Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 3, Clasele 11-12 Marime 0.92 kb
#include<fstream.h>
#define dim 257
int a[dim][dim];
int vect[dim],viz[dim],cont,v[dim];
int main()
{ifstream f("strazi.in");
 ofstream g("strazi.out");
 int n,i,j,m,x,y,k=0,kk=0;

 f>>n>>m;
 for(i=1;i<=m;i++)
  {f>>x>>y;
   a[x][0]++;
   a[x][a[x][0]]=y;
  }
f.close();

 for(i=1;i<=n;i++)
   {if(!viz[i])
     {v[kk]=i;
      x=i;
      k++;
      vect[k]=x;
      viz[x]=1;
      y=1;
      while(a[x][0])
       {while((y<=a[x][0])&&(viz[a[x][y]])) y++;
	 if((y<=a[x][0])&&(!viz[a[x][y]]))
	  {x=a[x][y]; //cazul 1.y<=a[x][0]&&(!viz[x][y])
	   viz[x]=1;  //cazul 2.y==(a[x][0]+1)
	   k++;
	   vect[k]=x;
	  }
	  else a[x][0]=0;
       }
      kk++;
      v[kk]=x;
      kk++;
      cont++;
     }
   }

 cont--;
 g<<cont<<'\n';
  for(i=1;(i<kk)&&(cont);i=i+2)
    {g<<v[i]<<" "<<v[i+1]<<'\n';
     cont--;
    }
 for(i=1;i<=n;i++)
  g<<vect[i]<<" ";
 g<<'\n';
g.close();
return 0;
}