codeforces 780 C
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; }
posted on 2017-03-12 10:51 HelloWorld!--By-MJY 阅读(274) 评论(0) 编辑 收藏 举报