Cod sursa(job #133778)

Utilizator FlorianFlorian Marcu Florian Data 9 februarie 2008 18:30:41
Problema Oras Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
FILE*f=fopen("oras.in","r");
FILE*g=fopen("oras.out","w");
char a[201][201];
int n;
void caz()
  {
  a[6][1]='1';
  a[4][6]='1';
  a[2][6]='1';
  a[6][3]='1';
  a[6][5]='1';
  }
void gaseste(int n)
  {
  int i;
  //am fixate nodurile n-2, si adaug nodurile n-1,n.
  a[n-1][n]='1'; //am nod de la n-1, la n
  for(i=1;i<=n-2;++i)
    {
    a[i][n-1]='1';
    a[n][i]='1';   //drum: n-1 -> n -> i
    }
  }
int main()
 {
 int i,j;
 fscanf(f,"%d",&n);
 for(i=1;i<=n;++i) for(j=1;j<=n;++j) a[i][j]='0';
 a[1][2]='1'; a[2][3]='1'; a[3][1]='1';
 if(n==4) fprintf(g,"-1\n");
 else
   {
   //am fixat graful cu 3 noduri:
   if(n%2==0)
    {
    caz();
    for(i=8;i<=n;i+=2) gaseste(i);
    }
   else
    for(i=5;i<=n;i+=2) gaseste(i);
    
   }
 for(i=1;i<=n;++i)
   {
   for(j=1;j<=n;++j)
     fprintf(g,"%c",a[i][j]);
   fprintf(g,"\n");
   }
 return 0;
 }