n 个点 n-1条边
相连的三个点颜色不能相同比赛的时候没出
#include<stdio.h>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
using namespace std;
#define MAXN 200010
#define inf 1000000000.0
//double ind[MAXN],v[MAXN];
int ans;
int co[MAXN];
vector<int>z[MAXN];
void dfs(int u,int fa)
{
int k=0;
int sz=z[u].size();
for(int i=0;i<sz;i++)
{
if(z[u][i]==fa)
continue;
k++;
while(co[u]==k||co[fa]==k)
k++;
co[z[u][i]]=k;
dfs(z[u][i],u);
}
ans = max(ans,k);
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<n;i++)
{
int a,b;
scanf("%d%d",&a,&b);
z[a].push_back(b);
z[b].push_back(a);
}
co[1]=1;
dfs(1,0);
printf("%d\n",ans);
for(int i=1;i<=n;i++)
printf("%d ",co[i]);
return 0;
}