这个题数据绝对有问题!!!!
你们可以去复制那些AC程序,然后输入一个完全图,比如:
然后就米西米西了...但是他们又的确AC了。。。
我坚信我的代码才是正确的!
#include<bits/stdc++.h>
using namespace std;
vector<int>G[10000];
int color[10000];
int flag[10000],n,m;
int check(){
memset(color,0,sizeof(color));
memset(flag,0,sizeof(flag));
color[1]=1;int maxk=1;
for(int i=1;i<=n;++i)
maxk=max(maxk,int(G[i].size()));
for(int i=2;i<=n;i++){
for(int j=0;j<G[i].size();++j)
flag[color[G[i][j]]]=i;
bool _flag=true;
for(int j=1;;++j)
if(flag[j]!=i){
color[i]=j;_flag=false;
maxk=max(j,maxk);break;
}
}
return maxk;
}
int main(){
while(scanf("%d%d",&n,&m)==2){
for(int i=1;i<=n;++i)G[i].clear();
for(int i=1,a,b;i<=m;++i){
scanf("%d%d",&a,&b);
G[a].push_back(b);
G[b].push_back(a);
}
int l=check()|1;
printf("%d\n",l);
for(int i=1;i<=n;++i)printf("%d\n",color[i]);
printf("\n");
}
}