玄学题目 样例都不用过的那种
枚举每个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); }