【贪心】【DFS】Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) C. Andryusha and Colored Balloons

从任意点出发,贪心染色即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include<cstdio>
#include<algorithm>
using namespace std;
int v[200010<<1],next[200010<<1],first[200010],e;
void AddEdge(int U,int V)
{
    v[++e]=V;
    next[e]=first[U];
    first[U]=e;
}
bool vis[200010];
int n,col[200010];
void dfs(int U,int n1,int n2)
{
    vis[U]=1;
    int co=0;
    for(int i=first[U];i;i=next[i])
      if(!vis[v[i]])
        {
          ++co;
          while(co==n1 || co==n2)
            ++co;
          col[v[i]]=co;
          dfs(v[i],col[U],col[v[i]]);
        }
}
int main()
{
//  freopen("c.in","r",stdin);
    int x,y;
    scanf("%d",&n);
    for(int i=1;i<n;++i)
      {
        scanf("%d%d",&x,&y);
        AddEdge(x,y);
        AddEdge(y,x);
      }
    col[1]=1;
    dfs(1,1,-1);
    printf("%d\n",*max_element(col+1,col+n+1));
    for(int i=1;i<n;++i)
      printf("%d ",col[i]);
    printf("%d\n",col[n]);
    return 0;
}
posted @   AutSky_JadeK  阅读(123)  评论(0编辑  收藏  举报
TVアニメ「Charlotte(シャーロット)」公式サイト TVアニメ「Charlotte(シャーロット)」公式サイト
点击右上角即可分享
微信分享提示