http://codeforces.com/problemset/problem/734/E

每次操作可以把连通的同颜色的点全部换颜色,缩点,找直径,第一遍dfs找起点,第二遍dfs求直径。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std; int c[],d[] = {},n;
vector<int> v[]; void dfs(int x,int pre)
{
for(int i = ;i < v[x].size();i++)
{
int t = v[x][i];
if(t == pre) continue;
d[t] = d[x]+(c[x]^c[t]);
dfs(t,x);
}
} int main()
{
scanf("%d",&n);
for(int i = ;i <= n;i++) scanf("%d",&c[i]);
for(int i = ;i < n;i++)
{
int a,b;
scanf("%d%d",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
dfs(,-);
int t = ,maxx = d[];
for(int i = ;i <= n;i++)
{
if(d[i] > maxx)
{
maxx = d[i];
t = i;
}
}
memset(d,,sizeof(d));
dfs(t,-);
maxx = d[];
for(int i = ;i <= n;i++)
{
maxx = max(d[i],maxx);
}
printf("%d\n",(maxx+)/);
return ;
}

最新文章

  1. Android测试提升效率批处理脚本(三)
  2. 解析PHP正则提取或替换img标记属性
  3. 杭电acm2029-Palindromes _easy version
  4. mysql 的2个关于事务和安全性的参数
  5. RHEL/CentOS/Fedora各种源(EPEL、Remi、RPMForge、RPMFusion)配置
  6. WinCE应用程序崩溃提示框的处理
  7. 20145305《JAVA程序设计》课程总结
  8. Maximum Subarray 解答
  9. 绘制FastMM内存分配流程图(小块内存分配)
  10. ODPS 下一个map / reduce 准备
  11. screen实现关闭ssh之后继续运行代码
  12. teamviewer试用期到期解决
  13. SMS Error code: +CMS
  14. Angular 学习笔记 ( CDK - Layout )
  15. xlrd模块;xlwt模块使用,smtp发送邮件
  16. ansible Api 2.3-2.4
  17. NuGet Install-Package报错解决Package Manager Console error - PowerShell version 2.0 is not supported. Please upgrade PowerShell to 3.0 or greater and restart Visual Studio.
  18. centos 支持安装libsodium
  19. 【转】Linux中包管理与定时任务
  20. hdu 1698+poj 3468 (线段树 区间更新)

热门文章

  1. Java对象头与锁
  2. 从零开始入门 K8s | GPU 管理和 Device Plugin 工作机制
  3. 1z0-062 题库解析2
  4. nacos-docker安装nacos并配置数据库
  5. 暑假提高组集训Day1 T1
  6. 随机算法 - Miller_Rabin pollard_rho
  7. eclipse反编译插件 jadclipse jad
  8. Splash简单应用
  9. git 其它补充(版本)
  10. MySql查看修改l时区