codeforces - 734E - Anton and Tree(图论 树)
LINK:http://codeforces.com/contest/734/problem/E
题意:
给一棵树,点被染成了黑白二色,每次操作可以翻转相邻的同色点的颜色,问最少多少次操作能把整棵树染成一个颜色。
解法:
当天没去看..被剧透了,帮人把结论证明了一遍:把相邻同色的点缩点之后树的直径的一半就是答案。
对每个不是直径上的分支,都能在分支节点染色,从而合并进树的直径上进行染色,所以只用挑一个颜色染完直径即可。
#include<bits/stdc++.h>
using namespace std;
const int N = 2000010;
bool vis[N] = {
0};