Cod sursa(job #333720)

Utilizator cotofanaCotofana Cristian cotofana Data 23 iulie 2009 16:50:02
Problema Oras Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <cstdio>
#define MAXN 201

using namespace std;

int n, m[MAXN][MAXN];

void solve(int k) {
	if (k==6) {
		m[1][1]=m[1][2]=m[1][3]=0, m[1][4]=m[1][5]=m[1][6]=1;
		m[2][1]=1, m[2][2]=0, m[2][3]=m[2][4]=1, m[2][5]=m[2][6]=0;
		m[3][1]=1, m[3][2]=m[3][3]=m[3][4]=0, m[3][5]=m[3][6]=1;
		m[4][1]=m[4][2]=0, m[4][3]=1, m[4][4]=0, m[4][5]=1, m[4][6]=0;
		m[5][1]=0, m[5][2]=1, m[5][3]=m[5][4]=m[5][5]=0, m[5][6]=1;
		m[6][1]=0, m[6][2]=1, m[6][3]=0, m[6][4]=1, m[6][5]=m[6][6]=0;
		
		return ;
	}
	if (k==1) return ;
	
	int i;
	
	solve(k-2);
	
	//nodes 1->n-2
	for (i=1; i<=k-2; ++i) {
		m[i][k-1]=1;
		m[i][k]=0;
	}
	
	//node n-1
	for (i=1; i<k; ++i) m[k-1][i]=0;
	m[k-1][k]=1;
	
	//node n
	for (i=1; i<k-1; ++i) m[k][i]=1;
	m[k][k-1]=m[k][k]=0;
}

int main() {
	int i, j;
	freopen("oras.in", "r", stdin);
	freopen("oras.out", "w", stdout);
	
	scanf("%d\n", &n);
	
	if (n==4) {
		printf("-1\n");
		return 0;
	}
	solve(n);
	
	for (i=1; i<=n; ++i) {
		for (j=1; j<=n; ++j) printf("%d", m[i][j]);
		printf("\n");
	}
	
	return 0;
}