Cod sursa(job #868428)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 31 ianuarie 2013 00:24:16
Problema Oras Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<fstream>
#define dim 203
using namespace std;


ifstream f("oras.in");
ofstream g("oras.out");

int n,i,j;
bool a[dim][dim];
void solve ( int n ) {
	
	if(n==3){
		
		a[1][2]=a[2][3]=a[3][1]=1;
		return ;
	}
	if(n==6){
		a[1][2]=a[1][3]=a[1][4]=1;
        a[2][3]=a[2][4]=a[2][5]=1;
        a[3][4]=a[3][6]=1;
        a[4][5]=a[4][6]=1;
        a[5][1]=a[5][3]=a[5][6]=1;
        a[6][1]=a[6][2]=1;
		return ;
	}
	if(n==4)
		return ;
	
	for(int i=1;i<=n-2;++i) {
		a[i][n-1]=1;
		a[n][i]=1;
	}
	a[n-1][n]=1;
	solve(n-2);
}
int main () {
	
	//presupunem ca avem pt N-2 drumurile realizare,raman de conectat nodurile n-1 si n astfel:
	//construim arc de la n-1 la n
	// construim arce de la nodurile(1,2...n-2) catre n-1, iar de la n catre (1,2...n-2);
	
	//preprocesam valorile pt n=3 si n=6,iar daca n=4 nu avem solutie;
	
	f>>n;
	
	solve(n);
	
	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";
	}
	return 0;
}