Codeforces Round #540 (Div. 3) F1. Tree Cutting (Easy Version) 【DFS】

海康威视摄像头网线连接笔记本电脑,客户端提示:1连接设备失败。设备不在线或网络原因引起的连接超时等。(HCNetSDK.dll[7].)解决方案 1.环境 电脑:联想笔记本电脑(win10系统) 摄像头:海康威视DS-2CD3T20D-i5,4mm 连接方式:直接用网线将摄像头和摄像头连接 2.问题: 客户端出现如下提示: 3. 解决流程: 1.确认网线是否有问题:我的网线指示灯常亮,并且设备能够被搜索到,只是一直显示离线 2.按照网上教程直接配置摄像头的ip地址与电脑同一网段:登录失败。 错误码为 HCNetSDK.dll[7].(连接设备失败。设备不在【海康威视吧】_百度贴吧 失败了,没有反应 3.查看有线网卡的地 阅读详情

任意门:http://codeforces.com/contest/1118/problem/F1

F1. Tree Cutting (Easy Version)
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

You are given an undirected tree of nn vertices.

Some vertices are colored blue, some are colored red and some are uncolored. It is guaranteed that the tree contains at least one red vertex and at least one blue vertex.

You choose an edge and remove it from the tree. Tree falls apart into two connected components. Let's call an edge nice if neither of the resulting components contain vertices of both red and blue colors.

How many nice edges are there in the given tree?

Input

The first line contains a single integer nn (2≤n≤3⋅1052≤n≤3⋅105) — the number of vertices in the tree.

The second line contains nn integers a1,a2,…,ana1,a2,…,an (0≤ai≤20≤ai≤2) — the colors of the vertices. ai=1ai=1 means that vertex ii is colored red, ai=2ai=2 means that vertex ii is colored blue and ai=0ai=0 means that vertex ii is uncolored.

The ii-th of the next n−1n−1 lines contains two integers vivi and uiui (1≤vi,ui≤n1≤vi,ui≤n, vi≠uivi≠ui) — the edges of the tree. It is guaranteed that the given edges form a tree. It is guaranteed that the tree contains at least one red vertex and at least one blue vertex.

Output

Print a single integer — the number of nice edges in the given tree.

Examples
input
Copy
5
2 0 0 1 2
1 2
2 3
2 4
2 5
output
Copy
1
input
Copy
5
1 0 0 0 2
1 2
2 3
3 4
4 5
output
Copy
4
input
Copy
3
1 1 2
2 3
1 3
output
Copy
0
Note

Here is the tree from the first example:

The only nice edge is edge (2,4)(2,4). Removing it makes the tree fall apart into components {4}{4} and {1,2,3,5}{1,2,3,5}. The first component only includes a red vertex and the second component includes blue vertices and uncolored vertices.

Here is the tree from the second example:

Every edge is nice in it.

Here is the tree from the third example:

Edge (1,3)(1,3) splits the into components {1}{1} and {3,2}{3,2}, the latter one includes both red and blue vertex, thus the edge isn't nice. Edge (2,3)(2,3) splits the into components {1,3}{1,3} and {2}{2}, the former one includes both red and blue vertex, thus the edge also isn't nice. So the answer is 0.

 

 

题意概括:

给出一棵无向树,每个结点有一种颜色(1红 2蓝 0无色),如果删掉某条边可以把这棵树分成两部分刚好各部分只具有一种颜色,则这种边为nice边,求最多有多少条。

 

解题思路:

哈哈哈,一开始试着BFS暴力了一波,果然水不过。

正解DFS,很明显先预处理出 每个结点为跟的子树所具有的两种颜色的结点个数 dd[ x ][ 1 ]  && dd[ x ][ 2 ];

DFS一遍整棵树,判断当前边所分成的两部分是否满足条件,一部分就是预处理的子树部分,另一部分就是用树的根节点部分减去子树部分。

 

AC code:

 1 #include <bits/stdc++.h>
 2 #define INF 0x3f3f3f3f
 3 #define LL long long
 4 using namespace std;
 5 const int MAXN = 3e5+10;
 6 int color[MAXN];
 7 int u[MAXN], v[MAXN];
 8 int dd[MAXN][3];
 9 bool vis[MAXN];
10 int N, ans;
11 struct Edge
12 {
13     int v, nxt;
14 }edge[MAXN<<1];
15 int head[MAXN], cnt;
16 
17 void init()
18 {
19     memset(head, -1, sizeof(head));
20     cnt = 0;
21 }
22 
23 void add(int from, int to)
24 {
25     edge[cnt].v = to;
26     edge[cnt].nxt = head[from];
27     head[from] = cnt++;
28 }
29 
30 void dfs1(int x, int fa)
31 {
32     int v;
33     if(color[x] == 1) dd[x][1]+=1;
34     else if(color[x] == 2) dd[x][2]+=1;
35     for(int i = head[x]; i != -1; i = edge[i].nxt){
36         v = edge[i].v;
37         if(v == x || v == fa) continue;
38         dfs1(v, x);
39         dd[x][1]+=dd[v][1];
40         dd[x][2]+=dd[v][2];
41     }
42 }
43 
44 
45 void dfs2(int x, int fa)
46 {
47     int v;
48     for(int i = head[x]; i != -1; i = edge[i].nxt){
49         v = edge[i].v;
50         if(v == fa) continue;
51         if(dd[v][1] == 0 && (dd[1][2]-dd[v][2]) == 0){
52 //            printf("u:%d v:%d\n", x, v);
53             ans++;
54         }
55         else if(dd[v][2] == 0 && (dd[1][1]-dd[v][1]) == 0){
56 //            printf("u:%d v:%d\n", x, v);
57             ans++;
58         }
59         dfs2(v, x);
60     }
61 }
62 
63 int main()
64 {
65     init();
66     scanf("%d", &N);
67     for(int i = 1; i <= N; i++){
68         scanf("%d", &color[i]);
69     }
70     for(int i = 1; i < N; i++){
71         scanf("%d %d", &u[i], &v[i]);
72         add(u[i], v[i]);
73         add(v[i], u[i]);
74     }
75 
76     dfs1(1, 0);
77     ans = 0;
78     dfs2(1, 0);
79 
80     printf("%d\n", ans);
81 
82     return 0;
83 }
View Code

 

Node-RED系列(二九):使用slider与chart节点来实现双折线时间序列图 今天教使用dashboard的chart组件和slider组件来是实现一个双线的折线图。效果如下 拖动顶部的电量和水量,低下的图表会实时显示时间和值之所以做这个模拟案例,是将教 大家使用chart节点和slider节点先说一下slider节点,该节点是一个滑块节点,可以接受上一节点的 msg.payload,作为滑块的值, slider必须设置最大值和最小值。且不能动态设置。 此外当用户拖动slider滑块,改变值时,该节点会向下传递当前值 以属性payload装载。在说一下chart节点,该节点可以用于 阅读详情

相关推荐

手把手教你用YOLOv11-seg-LSCD搞定树脂件瑕疵检测(附数据集与代码)

本文详细介绍了如何使用YOLOv11-seg-LSCD模型进行工业级树脂件瑕疵检测,包括环境配置、数据集构建、模型训练与调优、部署优化等全流程。通过LSCD模块的创新设计,有效提升了气泡、裂纹等微小缺陷的检测精度,适用于各类树脂制品的质量检测场景。

weixin_28677005的博客 418

F1. Tree Cutting (Easy Version)

 http://codeforces.com/contest/1118/problem/F1 题意:给一棵树,有些节点是红色或蓝色,或无色,切掉一条边后分成两棵树且红蓝在不同的树; 有多少条边可以切; 思路:一个节点的一个子树点有么包含红的全部且不包含蓝的,或包含蓝的全部而不包含红的,那么这条边可以切;dfs是计算子树红蓝个数是否满足条件; #include&lt;algorithm&g...

newhonor 506

基于单片机的继电器参数测试系统设计

由于原有测试系统在参数设置上过于单一,在对继电器测试过程中需要多次进行器件连接,导致对其测试准确度下降,会造成继电器的二次损伤,基于单片机研究继电器参数测试系统的设计方法。在硬件设计上,构建二级模式集散控制框架,利用单片机进行数据采集和处理,满足实时继电器参数数据的同步控制;设计双极性反向比例输出电路,分别利用电极电阻对继电器两侧电压进行放大,实现继电器实时电压的检测。实验结果:以两组类型断电器为测试对象,分别连接示波器进行真实数据采集,在本文系统的应用下所得参数测试结果,与真实的数据相一致,具有实际应用效

weixin_45905610的博客 1439

CodeForces - 1118 F1 Tree Cutting (Easy Version)【DFS】

F1. Tree Cutting (Easy Version) time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given an undirected tree of nn vertices. ...

微微风簇浪,散作满河星 491

【嵌入式面经】上海 70迈 线上笔试

“关注|点赞|收藏” 福利干货第一时间送达!最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作!

qq_56921854的博客 1140

金融级IT架构-数字银行的云原生架构解析

最近断断续续花了差不多2到3周的时间阅读完由电子工业出版社出版的《金融级IT架构:数字银行的云原生架构解密》的这本书,作者是作者是网商银行技术编委会。 本书契合了当前银行业分布式架构转型趋势,内容是经过实践检验的领先技术介绍了网商银行IT技术架构演进路线,涵盖了分布式、单元化、弹性混合云、云原生多个基础架构领域,同时介绍了技术风险、安全可信、业务架构等多方面的技术实践经验。 对于这本书实际很早搜索云原生相关书籍的时候就搜索到,但是一看标题是金融IT架构方面的因此没有引起太多的重视,后面由华章...

年少有为 4064

Tree Cutting (Easy Version)//树上dfs

题目链接 题意: 树上每个节点有红、蓝三种颜色,有的无颜色,现去掉任意一条边,使其变成两个联通分量,并且每个连通分量只有一种颜色,问有哪些边去掉之后可以达到要求。 解析: 以每一个点为根,dfs看包括他本身在内的子树节点是否满足题意即可。 #include <iostream> #include <cstdio> #include <cstring> #incl...

wqq的博客 332

危废焚烧优化控制系统设计与实现:基于数据驱动的控制参数预测

本文提出了一种基于数据驱动的危险废物焚烧过程优化控制方法。系统利用历史运行数据和实时监测数据,通过深度学习模型预测关键控制参数,实现焚烧过程的智能化控制。系统采用Python开发,结合TensorFlow/PyTorch框架,构建了完整的数据采集、预处理、特征工程、模型训练和实时预测闭环系统。该系统能够处理多变量非线性关系,适应工况变化,从历史数据中学习最优控制策略,相比传统PID控制方法具有显著优势。论文详细介绍了系统架构、算法设计和实现细节,为危废焚烧过程的优化控制提供了有效解决方案。

huanghm88的专栏 207

I - Tree Cutting (Easy Version)---树形dp

I - Tree Cutting (Easy Version)----链接 输出量 标准输出 给你一棵没有方向的树n顶点。 有些顶点是蓝色的,有些是红色的,有些是未着色的。保证树包含至少一个红色顶点和至少一个蓝色顶点。 你选择一个边缘并将它从树中移除。树被分成两个相连的组件。让我们说一句“边缘”好的,漂亮的如果两个结果组件都不包含红色和蓝色的顶点。 多少好的,漂亮的在给定的树中有边缘...

小糊涂的博客 244

YOLOv11魔改高效涨点 | 注意力篇 | SimAM注意力:基于神经科学的 3D 注意力机制,三维权重的暴力美学,无参数也能暴力涨点?代码极简,彻底疯狂!!!

在本文中,我们为卷积神经网络(ConvNets)提出了一个概念简单但非常有效的注意力模块。与现有的通道注意力(Channel-wise)和空间注意力(Spatial-wise)模块不同,我们的模块在不向原始网络添加参数的情况下,推断出层中特征图的 3D 注意力权重。具体来说,我们基于一些知名的神经科学理论,提出优化一个能量函数来寻找每个神经元的重要性。我们进一步推导出了该能量函数的快速闭式解,并表明该解可以用不到十行代码实现。

猫天意的博客 248

基于STM32的设计智慧超市管理系统(带收银系统+物联网环境监测)_167

本系统主要由超市环境监测部分和商品管理部分组成。环境监测部分主控芯片采用STM32F103C8T6,主要包括温湿度传感器、烟雾传感器和空调制热开关、空调制冷开关,采集的数据通过ESP8266模块+MQTT协议上传至OneNet云平台,在OneNet云平台设计手机和电脑版本可视化页面,能够在页面上查看超市的环境信息,还能在页面上手动打开空调制热开关和空调制冷开关。商品管理部分主要由RC522-RFID读卡器、上位机组成,实现商品选购、结算、顾客的VIP会员卡注册管理等功能。

6071

Tree Cutting (Easy Version)(树深搜)

链接:F1 - Tree Cutting (Easy Version) 题意: 给一棵有n个结点的树,每个结点有有三种情况,蓝色,黑色,红色 给定n-1条边 问:如果删掉一条边,使得到的两个子树中,一棵子树包含所以蓝点,另一颗包含红点,有多少种删边方法 解析: 遍历这棵树,分别累计子节点的蓝点和红点数目 如果如果子节点包含所以蓝色点,且没有红色点 或者子节点包含所以红...

wangtao的博客 399

HFSS实战项目——高带外抑制特性SIW带通滤波器

本文对单级滤波器和双级滤波器的设计、工作原理及仿真结果进行了详细分析,并验证了双级SIW带通滤波器在性能方面的优越性,为微波通信系统中滤波器的设计和应用提供了重要参考。

2401_87464239的博客 1816

Codeforces Round #540 (Div. 3) F1 Tree Cutting (Easy Version) 1118F1 (裸的树上dfs,树形dp)

传送门:https://codeforces.com/contest/1118/problem/F1 F1. Tree Cutting (Easy Version) time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard outpu...

Amo丶 418

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Codeforces Round #540 (Div. 3) F1. Tree Cutting (Easy Version) /*遍历树样题*/

http://codeforces.com/contest/1118/problem/F1 Codeforces Round #540 (Div. 3) F1. Tree Cutting (Easy Version) /*遍历树样题*/ 统计出以i为结点的子树的红色结点个数,和蓝色结点个数,判断一下就好了 (注意n==2,因为遍历出发找的是>=2度的点) #includ...

Rshs 309

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Codeforces Round #540 (Div. 3) 部分题解

Codeforces Round #540 (Div. 3) 题目链接:https://codeforces.com/contest/1118 题目太多啦,解释题意都花很多时间...还有事情要做,就选一些题来写吧。 B. Tanya and Candies 题意: 在n个数中任意删去一个,如果这个数被删去后,剩余数的奇数和以及偶数和相等,那么就定义这个数为"好数"。现在问这n个...

dft539533的博客 218

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Codeforces Round #540 (Div. 3):F1 - Tree Cutting (Easy Version)

题目链接:http://codeforces.com/contest/1118/problem/E 题意:现在有一棵树,树上的每个节点可以涂成红色、蓝色,或者不涂色,现在你可以删去一条边,将一棵树变成两棵树,两个数只包含一种颜色。问这样的边又几个。 解题心得:dfs枚举得到以当前点为新的树的根节点分别包含了红色、蓝色节点的数量,该节点所在的子树包含了所有的红色并且没有蓝色,或者包含了所有的蓝色没有...

二营长的意大利炮友 279

Codeforces Round #540 (Div. 3) F1. Tree Cutting (Easy Version) 思维

题解 题目大意,给一个树,每个节点可能是红色蓝色或无色,删去一条边,要求删去后得到的两个树只有红色或蓝色节点 问有多少种删法,树至少有一个红色和蓝色节点。 DFS整个树,回溯时统计以每个节点为根的子树蓝色和红色节点数量,如果子树拥有某个颜色全部节点且没另一个颜色节点则满足条件。 AC代码 #include &lt;stdio.h&gt; #include &lt;bits/stdc++.h&gt;...

CaprYang的博客 531

Codeforces 1118F1 Tree Cutting (Easy Version) (简单树形DP)

<题目链接> 题目大意: 给定一棵树,树上的点有0,1,2三中情况,0代表该点无色。现在需要你将这棵树割掉一些边,使得割掉每条边分割成的两部分均最多只含有一种颜色的点,即分割后的两部分不能1,2点夹杂(0的点数可以任意),问你最多能有几条这样的割点。 解题分析: dfs求解出所有点以自己为根的子树 i 中1,2,节点的个数num1,num2,然后根据母树与子树之间的num1,n...

weixin_30443895的博客 154

【DFS+思维】F1. Tree Cutting (Easy Version)

http://codeforces.com/contest/1118/problem/F1 F1. Tree Cutting (Easy Version) time limit per test 2 seconds You are given an undirected tree ofnnvertices. Some vertices are colored blue, some a...

qq_41037114的博客 362

CodeForces - 1118F1 Tree Cutting (Easy Version) (树上dfs)

Tree Cutting (Easy Version) You are given an undirected tree of n vertices. Some vertices are colored blue, some are colored red and some are uncolored. It is guaranteed that the tree contains at leas...

muyu__的博客 334

CodeForces - 1118F1 Tree Cutting (Easy Version) 树形dp

You are given an undirected tree of nn vertices. Some vertices are colored blue, some are colored red and some are uncolored. It is guaranteed that the tree contains at least one red vertex and at le...

还我笑颜 423

Codeforces 1118F1 Tree Cutting (Easy Version) (DFS)

题面链接:传送门 F1. Tree Cutting (Easy Version) time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given an undirected tree of nn ...

weixin_41100093的博客 324

Codeforces 1118F1-Tree Cutting (Easy Version) (树形dp入门题)

我们一起去砍树 咔咔咔 You are given an undirected tree ofnnvertices. Some vertices are colored blue, some are colored red and some are uncolored. It is guaranteed that the tree contains at least one red ver...

From now on...的Blogs 313

CodeForces - 1118F1 Tree Cutting (Easy Version)(树形dp)

题目链接:点击查看 题目大意:给定n个点,每个点的权值分别对应颜色:0:无颜色,1:红色,2:蓝色,现在需要切割边,使切割后的两个部分不能出现红色和蓝色掺杂的部分,也就是说两个部分必须只能各自含有一个颜色,问这样的边最多能有几条 题目分析:树形dp的思想,用dfs记录以当前点为根节点的子树中红色点和蓝色点的个数,边界为当该子树中红色节点或蓝色节点等于整棵树中的红色节点或蓝色节点,并且另一种颜色...

Falcon的博客 520

[codeforces1118F1]Tree Cutting (Easy Version)

time limit per test : 2 seconds memory limit per test : 256 megabytes You are given an undirected tree of nnn vertices. Some vertices are colored blue, some are colored red and some are uncolored. It ...

dxyinme-Zz 364
上一篇: Codeforces Round #540 (Div. 3) D1. Coffee and Coursework (Easy version) 【贪心】
下一篇: BZOJ 2120 数颜色 【带修改莫队】
莜莫oO
博客等级 码龄9年 7粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值