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
", ans);
	for (int i = 1; i <= n; i++) {
		printf("%d ", list[i]);
	}
	return 0;
}

  

寻找真正的热爱
原文地址:https://www.cnblogs.com/lesning/p/11838536.html