Cod sursa(job #3641)

Utilizator pocaituDavid si Goliat pocaitu Data 27 decembrie 2006 14:19:35
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<fstream.h>
int long viz[10001],m[10001][52],next[10001][52],vizit[10001],i,j,jj,k,n,nr;
int main()
{ifstream f("kreg.in");
 //f>>k>>n;
 k=50;n=10000;
 for(i=1;i<=k+1;i++)
   for(j=i+1;j<=k+1;j++)
	   {m[i][++m[i][0]]=j;
		next[i][m[i][0]]=++m[j][0];
		m[j][m[j][0]]=i;
		}

 for(i=k+2;i<=n;i++)
  {
   for(j=1,nr=0;nr<k/2;j++)
	 if(!viz[j])
	   for(jj=1;jj<=k;jj++)
		 if(!viz[m[j][jj]])
		   {nr++;
			vizit[++vizit[0]]=j;
			vizit[++vizit[0]]=m[j][jj];
			m[i][++m[i][0]]=j;
			m[i][++m[i][0]]=m[j][jj];
			viz[j]=viz[m[j][jj]]=1;

			m[m[j][jj]][next[j][jj]]=i;
			next[m[j][jj]][next[j][jj]]=m[i][0];
			next[j][jj]=m[i][0]-1;
			m[j][jj]=i;
            break;
			}
	for(j=1;j<=vizit[0];j++)
	 vizit[j]=viz[vizit[j]]=0;
	vizit[0]=0;
	}
ofstream g("kreg.out"); 
for(i=1;i<=n;i++)
  for(j=1;j<=k;j++)
   if(m[i][j])
	{g<<i<<" "<<m[i][j]<<'\n';
	 m[m[i][j]][next[i][j]]=0;
	 }
 g.close();
 return 0;
 }