玄学题目 样例都不用过的那种
枚举每个a,b统计a与b之间的关系 若满足条件(代码)则将把b染成a的颜色
#include<bits/stdc++.h>
using namespace std;
int f[305][305],a[305],co[1005];
char ss[1000500];
int main (){
int T;
scanf("%d",&T);
while(T--){
int color=0;
memset(co,0,sizeof(co));
int n,s;
scanf("%d%d",&n,&s);
scanf("%s",ss);
int cnt=0;
for(int i=1;i<=n;++i){
for(int j=i+1;j<=n;++j)
f[i][j]=f[j][i]=ss[cnt++]-'0';
}
for(int i=1;i<=n;++i) f[i][i]=1;//矩阵
for(int i=1;i<=n;++i){//枚举a
if(co[i]==0){
int ans=0;cnt=0;
co[i]=++color;
for(int j=1;j<=n;++j)if(f[i][j]&&co[j]==0) a[++cnt]=j;//a的关系
for(int j=1;j<=n;++j){//枚举b
ans=0;
for(int k=1;k<=cnt;++k){
if(f[j][a[k]]) ans++;
}
if(ans>=cnt/3) co[j]=co[i];//判断条件
}
}
}
for(int i=1;i<n;++i) printf("%d ",co[i]-1);
printf("%d\n",co[n]-1);
} 
京公网安备 11010502036488号