树的性质——cf1244D
特别简单,只有链的形式才符合要求,那么枚举前两个点的颜色搞一下就可以
#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的更多相关文章
- LeetCode总结 -- 树的性质篇
树的性质推断是树的数据结构比較主要的操作,一般考到都属于非常easy的题目,也就是第一道入门题.面试中最好不能有问题,力求一遍写对.不要给面试官不论什么挑刺机会.LeetCode中关于树的性质有下面题 ...
- HDU - 1272 小希的迷宫 并查集判断无向环及连通问题 树的性质
小希的迷宫 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一 ...
- hdu4171 Paper Route 树的性质+DFS
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4171 题意: 有n+1个点,这n+1个点由n条边相连,且保证连通.然后给出各个点到出口的距离,要求从 ...
- codeforces 447E or 446C 线段树 + fib性质或二次剩余性质
CF446C题意: 给你一个数列\(a_i\),有两种操作:区间求和:\(\sum_{i=l}^{r}(a[i]+=fib[i-l+1])\).\(fib\)是斐波那契数列. 思路 (一) codef ...
- 树的性质和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步,且这个步数是向上取 ...
- Gym - 100004A 树的性质
题目: 题意: 从节点 0 出发,把每一个节点都经过一遍,然后从一个节点回到学校. 由于有 n+1个节点,n条边,而且保证两两互相到达,那么这就是一个棵树. 于是,可以发现,如果从一个点出发,然后回到 ...
- cf1278D——树的性质+并查集+线段树/DFS判环
昨天晚上本来想认真打一场的,,结果陪女朋友去了.. 回来之后看了看D,感觉有点思路,结果一直到现在才做出来 首先对所有线段按左端点排序,然后用并查集判所有边是否联通,即遍历每条边i,和前一条不覆盖它的 ...
- bzoj 2434 阿狸的打字机 fail树的性质
如果a串是另b串的后缀,那么在trie图上沿着b的fail指针走一定可以走到a串. 而a串在b串里出现多少次就是它是多少个前缀的后缀. 所以把fail边反向建树维护个dfs序就行了. 并不是很难... ...
- 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 ...
随机推荐
- activemq消息中间件的依赖
<dependencies> <dependency> <groupId>org.apache.activemq</groupId> <artif ...
- 关于respond.js
作用:可以让ie8及以下支持css3的媒体查询. 有几个问题: 1.由于浏览器的安全机制,Respond.js 不能在通过 file:// 协议(打开本地HTML文件所用的协议)访问的页面上发挥正常的 ...
- 76 学习C++
0 引言 C++语言特性记录,提高对这门语言的理解,进而带动对编程语言特性的理解. 相关网站及教程 # W3Cschool C++教程 https://www.w3cschool.cn/cpp/ # ...
- jmeter之--断言json响应&json path espressions的语法
一.提取所需要断言的内容: 响应数据如下:加入需要提取id为90的值 { , "name" : "python", "url" : &quo ...
- ZROI week6
ZROI week6 T1 用一个类似背包的东西记录答案. T2 好像直接用|操作即可. T3 瞎搞就完事了 T4 启发式合并,然而变量写错了,就没了... 总结 100 + 100 + 100 + ...
- UIDatePicker odd behavior when setting minuteInterval
http://stackoverflow.com/questions/6948297/uidatepicker-odd-behavior-when-setting-minuteinterval Her ...
- mysql全家桶(四)存储过程
一.存储过程1.介绍简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法: 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以 ...
- Redis入门很简单之二【常见操作命令】
Redis入门很简单之二[常见操作命令] 博客分类: NoSQL/Redis/MongoDB redisnosql缓存 Redis提供了丰富的命令,允许我们连接客户端对其进行直接操作.这里简单介绍一 ...
- Tomcat负载均衡、调优核心应用进阶学习笔记(一):tomcat文件目录、页面、架构组件详解、tomcat运行方式、组件介绍、tomcat管理
文章目录 tomcat文件目录 bin conf lib logs temp webapps work 页面 架构组件详解 tomcat运行方式 组件介绍 tomcat管理 tomcat文件目录 ➜ ...
- jekyll介绍安装.github静态页面工具
jekyll build # => 当前文件夹中的内容将会生成到 ./site 文件夹中. $ jekyll build --destination <destination> # ...