Sample Input
1
3 011 101 110
10
5 01111 10111 11011 11101 11110
貪心手法。點最多一百個,那麼,要讓每個點的作用都發揮出來。所有,可以模擬每次加入點所帶來的影響,來確定,兩個點是否要連接。
#include <iostream>
#include<cstdio>
using namespace std;
int ans,k,ss;
int gra[103][103];
int main()
{
int n,i,j,k;
scanf("%d",&n);
gra[1][2]=gra[2][1]=1;//最少存在一條邊
for(i=3;i<=100;i++)//依次增加頂點
{
for(j=1;j<i;j++)
{
ss=0;//三元環個數
for(k=1;k<j;k++)
if(gra[k][j]&&gra[k][i])
ss++;
if(n>=ss)
{
n-=ss;
gra[i][j]=gra[j][i]=1;
}
if(n==0)break;
}
if(n==0)break;
}
n=i;
printf("%d\n",n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%d",gra[i][j]);
printf("\n");
}
return 0;
}