树的性质——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 ...
随机推荐
- 【leetcode】979. Distribute Coins in Binary Tree
题目如下: Given the root of a binary tree with N nodes, each node in the tree has node.val coins, and th ...
- tcpdump使用小记
1, 类型的关键字主要包括:host, net, port: 2, 确定传输方向的关键字主要包括:src, dst, dst or src, dst and src: 3, 协议的关键字主要包括:fd ...
- shell脚本编程运算
一算术运算 bash中的算术运算:help let+, -, *, /, %取模(取余), **(乘方)实现算术运算:(1) let var=算术表达式(2) var=$[算术表达式](3) var= ...
- react教程 — 开发 总结
本文章是在熟练使用 VUE 的基础上,对比VUE 功能进行的一个技术总结. 1.react项目快速搭建 https://blog.csdn.net/mapbar_front/article/deta ...
- 前端每日实战:80# 视频演示如何用纯 CSS 创作一个自行车车轮
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/XBXEPK 可交互视频 此视频是可 ...
- 微信公众号的SpringBoot+Quartz的定时任务Demo
SpringBoot整合quartz并不难,难在普通类实现了Job接口后等于实例化交给quartz,不受Spring管理,则service层等等其他依赖的注入将无法注入,这也是难点之一. 解决方法: ...
- python 国内镜像加速
原因 经常在使用Python的时候需要安装各种模块,而pip是很强大的模块安装工具但是由于国外官方默认pip访问速度慢,经常被墙,导致无法安装,所以我们最好是将自己使用的pip源更换一下,这样就能解决 ...
- centos安装virtualbox
参考:http://www.if-not-true-then-false.com/2010/install-virtualbox-with-yum-on-fedora-centos-red-hat-r ...
- 【Vue】---Vue.config常用配置项
一.前言 Vue-cli3 搭建的项目 相比较Vue-cli2界面相对较为简洁,之前的build和config文件夹不见了,那么应该如何配置 如webpack等的配呢? 二.基本配置 只需要在项目的根 ...
- Spring Cloud Alibaba
Spring Cloud Alibaba Dubbo Dubbo Dubbo 系列 [Dubbo 系列总结] [Dubbo 系列(01)最简使用姿态] [Dubbo 系列(02)整体架构] Dubbo ...