Cod sursa(job #772274)

Utilizator batistaUPB-Oprea-Cosmin-Dumitru batista Data 28 iulie 2012 20:54:31
Problema Oras Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
using namespace std;
int n,i,j,k;
char a[202][202];
short l[202][202];
int main()//creeaza un graf complet,orientat a.i. intre oricare 2 noduri exista un lant de lmax<=2
{
	ifstream f("oras.in");ofstream g("oras.out");
	f>>n;
	for(i=1;i<=n;i++)
	  for(j=1;j<=n;j++)
		a[i][j]='0';
	for(i=1;i<n;i++){ a[i][i+1]='1'; l[i][i+1]=1; l[i][i+2]=2; }
	a[n][1]='1'; l[n][1]=1;l[n][2]=2;
	
	for(i=1;i<=n;i++)
	  for(j=1;j<=n;j++)
		if(i!=j && !l[i][j])
		  if(a[j][i] && l[j][i]==1)
		  {
			for(k=n;k>=1 && ((!l[k][j]==1 && !a[k][i]) || k==j );k--);
			if(k && k!=i)
			{
			 l[i][k]=1;
			 if(!l[i][j])l[i][j]=2;
			 a[i][k]='1';
			}
		  }
		  else
		  {
		   l[i][j]=1;
		   if(!l[i][j+1])l[i][j+1]=2;
		   a[i][j]='1';
		  }
	
	if(n==4){ g<<-1; return 0; }
	for(i=1;i<=n;i++)
	{
	  for(j=1;j<=n;j++)
		g<<a[i][j];
	  g<<'\n';
	}
	f.close();g.close();
return 0;}