codefoce 782c
好久没有更新了,特地来水一水
简单的涂色问题,大佬说基本都是贪心

#include<cstdio>
#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
#include<queue>
#define maxn 200200
using namespace std;
int list[maxn];
vector<int>G[maxn];
void insert(int be, int en) {
G[be].push_back(en);
}
int n;
int cnt = 1;
int ans = 0;
int fa[maxn];
int vis[maxn];
int bfs() {
queue<int>que;
que.push(1);
vis[1] = 1;
list[1] = 1;
while (!que.empty()) {
int x = que.front();
que.pop();
cnt = 1;
for (int i = 0; i < G[x].size();i++) {
int p = G[x][i];
if (!vis[p]) {
vis[p] = 1;
fa[p] = x;
if (x == 1) {
list[p] = ++cnt;
ans = max(ans, cnt);
}
else {
while (1) {
if (list[x] == cnt || list[fa[x]] == cnt) cnt++;
else break;
}
ans = max(ans, cnt);
list[p] = cnt++;
}
que.push(p);
}
}
}
return 0;
}
int main() {
int be, en;
scanf("%d", &n);
for (int i = 1; i < n; i++) {
scanf("%d %d", &be, &en);
insert(be, en);
insert(en, be);
}
bfs();
printf("%d\n", ans);
for (int i = 1; i <= n; i++) {
printf("%d ", list[i]);
}
return 0;
}
寻找真正的热爱

浙公网安备 33010602011771号