特别简单,只有链的形式才符合要求,那么枚举前两个点的颜色搞一下就可以

#include <bits/stdc++.h>
using namespace std;
int a[][],pos[],ok=,f[];
int o[];
vector<int> h[];
set<int> s[];
set<int>::iterator it;
long long d[][];
void dfs(int u,int fa)
{
f[u]=fa;
if(ok==-) return ;
if(h[u].size()>)
{
ok=-;
return ;
}
int k=;
for(int i=; i<h[u].size(); i++)
{
int v=h[u][i];
if(v==fa) continue;
k++;
while(pos[f[u]]==k||k==pos[u]) k++;
pos[v]=k;
s[k].insert(v);
dfs(v,u);
}
}
int main()
{
int n,i,j,x,y;
scanf("%d",&n);
for(i=; i<=; i++)
for(j=; j<=n; j++) scanf("%d",&a[i][j]);
for(i=; i<n; i++)
{
scanf("%d%d",&x,&y);
h[x].push_back(y);
h[y].push_back(x);
}
s[].insert();
pos[]=;
dfs(,);
if(ok==-) return puts("-1"),;
for(i=; i<=; i++)
for(it=s[i].begin(); it!=s[i].end(); it++)
{
d[i][]+=a[][*it];
d[i][]+=a[][*it];
d[i][]+=a[][*it];
}
long long mmin;
mmin=d[][]+d[][]+d[][];
mmin=min(mmin,d[][]+d[][]+d[][]);
mmin=min(mmin,d[][]+d[][]+d[][]);
mmin=min(mmin,d[][]+d[][]+d[][]);
mmin=min(mmin,d[][]+d[][]+d[][]);
mmin=min(mmin,d[][]+d[][]+d[][]);
printf("%lld\n",mmin);
if(mmin==d[][]+d[][]+d[][]) o[]=,o[]=,o[]=;
else if(mmin==d[][]+d[][]+d[][]) o[]=,o[]=,o[]=;
else if(mmin==d[][]+d[][]+d[][]) o[]=,o[]=,o[]=;
else if(mmin==d[][]+d[][]+d[][]) o[]=,o[]=,o[]=;
else if(mmin==d[][]+d[][]+d[][]) o[]=,o[]=,o[]=;
else if(mmin==d[][]+d[][]+d[][]) o[]=,o[]=,o[]=;
for(i=;i<=n;i++) printf("%d ",o[pos[i]]);
return ;
}

树的性质——cf1244D的更多相关文章

  1. LeetCode总结 -- 树的性质篇

    树的性质推断是树的数据结构比較主要的操作,一般考到都属于非常easy的题目,也就是第一道入门题.面试中最好不能有问题,力求一遍写对.不要给面试官不论什么挑刺机会.LeetCode中关于树的性质有下面题 ...

  2. HDU - 1272 小希的迷宫 并查集判断无向环及连通问题 树的性质

    小希的迷宫 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一 ...

  3. hdu4171 Paper Route 树的性质+DFS

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4171 题意: 有n+1个点,这n+1个点由n条边相连,且保证连通.然后给出各个点到出口的距离,要求从 ...

  4. codeforces 447E or 446C 线段树 + fib性质或二次剩余性质

    CF446C题意: 给你一个数列\(a_i\),有两种操作:区间求和:\(\sum_{i=l}^{r}(a[i]+=fib[i-l+1])\).\(fib\)是斐波那契数列. 思路 (一) codef ...

  5. 树的性质和dfs的性质 Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) E

    http://codeforces.com/contest/782/problem/E 题目大意: 有n个节点,m条边,k个人,k个人中每个人都可以从任意起点开始走(2*n)/k步,且这个步数是向上取 ...

  6. Gym - 100004A 树的性质

    题目: 题意: 从节点 0 出发,把每一个节点都经过一遍,然后从一个节点回到学校. 由于有 n+1个节点,n条边,而且保证两两互相到达,那么这就是一个棵树. 于是,可以发现,如果从一个点出发,然后回到 ...

  7. cf1278D——树的性质+并查集+线段树/DFS判环

    昨天晚上本来想认真打一场的,,结果陪女朋友去了.. 回来之后看了看D,感觉有点思路,结果一直到现在才做出来 首先对所有线段按左端点排序,然后用并查集判所有边是否联通,即遍历每条边i,和前一条不覆盖它的 ...

  8. bzoj 2434 阿狸的打字机 fail树的性质

    如果a串是另b串的后缀,那么在trie图上沿着b的fail指针走一定可以走到a串. 而a串在b串里出现多少次就是它是多少个前缀的后缀. 所以把fail边反向建树维护个dfs序就行了. 并不是很难... ...

  9. hdu 4081 Qin Shi Huang's National Road System 树的基本性质 or 次小生成树思想 难度:1

    During the Warring States Period of ancient China(476 BC to 221 BC), there were seven kingdoms in Ch ...

随机推荐

  1. js 中数组传递到后台controller 批量删除

    /*批量删除*/function datadel(url) { var ids=[]; $("input[type='checkbox']:checked").each(funct ...

  2. nucleus plus学习总结(后续)

    前言:     刚刚抽筋点了保存发布,结果要审核,那就分开写个续好了. 内容: signal     信号是异步通知task的一种机制,HISR是不可以接收信号的,但是可以发送信号.     TCB中 ...

  3. Hadoop 权限管理(转)

    如下图,hadoop访问控制分为两级,其中ServiceLevel Authorization为系统级,用于控制是否可以访问指定的服务,例如用户/组是否可以向集群提交Job,它是最基础的访问控制,优先 ...

  4. 20175223 MySQL

    目录 完成结果 要求 1 :导入world.sql 要求 2 :CityWanna.java CityWanna.java 要求 3 :CountryWanna.java CountryWanna.j ...

  5. python 操作数据库的常用SQL命令

    这俩天在学习PYTHON操作数据库的知识.其实基本SQL命令是与以前学习的MYSQL命令一致,只是增加了一些PYTHON语句. 1,安装pymysql,并导入. import pymysql 2,因为 ...

  6. 如何理解 HTML 语义化?

    先看下面两段代码 <div>标题</div> <div> <div>一段文字</div> <div> <div>列表 ...

  7. Web RTC录视频

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. SQL必知必会——思维导图

    Xmind实在太坑了,竟然不能导出高清图片,我回来折腾个PS整一下!

  9. 【java】自定义排序

    使用Comparable接口 这里定义了一个类Node,有两个属性,id,age. 排序方法是,先根据id升序排,id一样,age降序排. 里面有一个compareTo方法.返回值有三个 1. < ...

  10. 防止按钮重复点击的思路(js篇)

    最直接的思路可能就是点击按钮后,按钮的事件绑定函数解绑,1s后重新绑定函数 <button id=</button> <script> btn.onclick = fun ...