Cod sursa(job #2304432)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 18 decembrie 2018 00:40:09
Problema Oras Scor 55
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("oras.in");
ofstream fout("oras.out");

int n;
bool N[210],A[210][210];

void clear(int n){
	for(int i=0;i<=n;i++){
		for(int j=0;j<=n;j++){
			A[i][j]=0;
		}
	}
}

void clearn(int n){
	for(int i=0;i<=n;i++){
		N[i]=0;
	}
}

void bk(int k, int n){
	if(k==2) return;
	N[n]=1;
	for(int i=1;i<=n;i++){
		if(A[n][i])bk(k+1,i);
	}
	return;
}

bool comp(){
	for(int i=1;i<=n;i++)if(!N[i]) return 0;
	return 1;
}

int main(){
	fin>>n;
	if(n%2){
		clear(n);
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				if(j<i){
					if(i%2)A[i][j]=(j%2);
					else A[i][j]=!(j%2);
				}else if(j>i){
					if(i%2)A[i][j]=!(j%2);
					else A[i][j]=(j%2);
				}else A[i][j]=0;
			}
		}
		bool stop=false;
		for(int i=1;i<=n && stop;i++){
			clearn(n);
			bk(0,i);
			if(!comp()) stop=true;
		}
		if(stop)fout<<-1;
		else{
			for(int i=1;i<=n;i++){
				for(int j=1;j<=n;j++){
					fout<<A[i][j];
				}
				fout<<'\n';
			}
		}
	}else fout<<-1;
	return 0;
}