Pagini recente » Cod sursa (job #472359) | Cod sursa (job #565360) | Cod sursa (job #3134050) | Cod sursa (job #565181) | Cod sursa (job #1169385)
#include <fstream>
using namespace std;
ifstream fin ("oras.in");
ofstream fout ("oras.out");
int G[201][201],n;
bool bfs (int x, int total)
{
int q[10],viz[10];
for (int i=1; i<=total; ++i)
viz[i] = 0;
viz[x] = 1;
int l = 0, cnt = 1;
for (int i=1; i<=total; ++i)
if (G[x][i])
{
if (!viz[i])
{++cnt;
viz[i] = 1;
q[++l] = i;
}
}
for (int i=1; i<=l; ++i)
{
for (int j=1; j<=total; ++j)
{
if (G[q[i]][j])
{
if (!viz[j])
{
++cnt;
viz[j] = 1;
}
}
}
}
if (cnt == total)
return 1;
return 0;
}
void generate (int x)
{
int mask = (1<<(x*(x-1)/2));
for (int i=0; i<mask; ++i)
{
int cnt = 0;
for (int j=1; j<=x; ++j)
for (int k = j+1; k<=x; ++k)
{
if ((i>>cnt)&1)
G[j][k] = 1, G[k][j] = 0;
else G[k][j] = 1, G[j][k] = 0;
++cnt;
}
int ok = 1;
for (int j=1; j<=x; ++j)
ok &= bfs(j,x);
if (ok)
break;
}
}
int main()
{
fin>>n;
if (n == 4)
{
fout<<-1;
return 0;
}
int st;
if (n&1)
generate (3),st=3;
else generate (6),st=6;
for (int i=st+1; i<=n; ++i)
{
if ((i-st)&1)
{
for (int j=1; j<i; ++j)
{
G[j][i] = 1;
}
G[i][i+1] = 1;
}
else
{
for (int j=1; j<i-1; ++j)
{
G[i][j] = 1;
}
}
}
for (int i=1; i<=n; ++i)
{for (int j=1; j<=n; ++j)
{fout<<G[i][j];}
fout<<"\n";
}
}