链接:题目链接
来源:牛客网

白魔法师

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 262144K,其他语言524288K

64bit IO Format: %lld

题目描述

你是一个白魔法师。
现在你拿到了一棵树,树上有 个点,每个点被染成了黑色或白色。
你可以释放一次魔法,将某个点染成白色。(该点不一定是黑色点,也可以是白色点)
现在释放魔法后要保证最大的白色点连通块尽可能大。请求出最大白色连通块的大小。
注:所谓白色连通块,指这颗树的某个连通子图,上面的点全部是白色。

输入描述:
第一行输入一个正整数 ,代表树的顶点数量。
第二行输入一个长度为 的、仅由’W’和’B’组成的字符串,第 个点为’W’代表该点为白色,'B’代表该点为黑色。
接下来的 行,每行输入两个正整数 和 ,代表 点和 点有一条边连接。
输出描述:
一个正整数,代表施放魔法后,最大的白色连通块的大小。
输入:

4
WBBW
1 2
2 3
3 4

输出:

2

思路:
图的连通块问题,找出各个节点的白色连通块大小,最后再处理一下

资料:图的连通块问题
代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll N=1e5+5;
int n,tot,vis[N],num[N];
char s[N];
vector<int> g[N];
void dfs(int u)//根节点
{vis[u]=tot;//标记每个点属于那个连通块 ++num[tot];//记录有多少个白子节点 for(int i=0;i<g[u].size();++i){int to=g[u][i];if(vis[to]==0&&s[to]=='W')//走没走过且为白色的点 {dfs(to);}}
}
int main()
{cin>>n>>s+1;ll x,y;for(int i=1;i<n;i++){cin>>x>>y;g[x].push_back(y);g[y].push_back(x);//加入 ,记录有边的节点 }for(int i=1;i<=n;i++){if(vis[i]==0&&s[i]=='W')//找没有遍历过的节点,划分连通块 {tot++;//标记联通块的个数 dfs(i);}}int ans=0;for(int i=1;i<=n;i++){if(s[i]=='W'){ans=max(ans,num[vis[i]]);}else {int v=1;//因为会是魔法改变一次节点颜色 for(int j=0;j<g[i].size();j++){int to=g[i][j];if(s[to]=='W'){v+=num[vis[to]];}}ans=max(ans,v);}}cout<<ans<<endl;return 0;
}

白魔法师--图的连通块问题(牛客小白月赛25)相关推荐

  1. 牛客小白月赛25 C.白魔法师

    牛客小白月赛25 C.白魔法师 题目链接 题目描述 你是一个白魔法师. 现在你拿到了一棵树,树上有 个点,每个点被染成了黑色或白色. 你可以释放一次魔法,将某个点染成白色.(该点不一定是黑色点,也可以 ...

  2. 牛客小白月赛25 D.抽卡

    牛客小白月赛25 D.抽卡 题目链接 题目描述 王子连接的国服终于上线啦~ 已知王子连接的抽卡系统如下: 共有 n 个卡池,第 个卡池共有 aia_iai​ 种卡,每张卡的出货率都是相等的(也就是说该 ...

  3. 白魔法师(牛客小白月赛25 图、并查集)

    白魔法师 链接:https://ac.nowcoder.com/acm/contest/5600/C 题目描述 你是一个白魔法师. 现在你拿到了一棵树,树上有 nnn 个点,每个点被染成了黑色或白色. ...

  4. 牛客小白月赛25 C 白魔法师 并查集

    链接:https://ac.nowcoder.com/acm/contest/5600/C 来源:牛客网 题目描述 你是一个白魔法师. 现在你拿到了一棵树,树上有 个点,每个点被染成了黑色或白色. 你 ...

  5. 白魔法师-牛客小白月赛25

    对于这个题目,我的做法是换根dp, 因为可以选择将某一个点染成白色(不论之前的点是黑是白) , 做法如下: 将每个点当成根节点, 然后将根节点染成白色, 完全符合题意:: 首先dfs一下, 自底向上, ...

  6. 牛客小白月赛25 C白魔法师 (bfs | 并查集)

    题目描述:题目链接 题意分析: n个节点 n-1条边,非常明显的树形结构(题目中就有说 ),因此不需要考虑环的情况. 树上有两种颜色,一种是白色一种是黑色,我们可以推断出这题应该是考虑连通块的大小,那 ...

  7. 牛客小白月赛25 C-白魔法师 ( 图论 + 并查集 )

    题目链接 解题报告: 思路:如果将一个黑色点染成白色,那么将得到一个白色连通块,这个连通块由和这个黑色点连结的所有白色连通块组成. 如果将一个白色点染成白色,那么不会有任何变化. 所以我们可以先并查集 ...

  8. 牛客小白月赛25 补题+题解[A-J]

    加油加油加油! 文章目录 A.AOE还是单体? B.k-size字符串 C.白魔法师 D.抽卡 E.点击消除 F.疯狂的自我检索者 G.解方程 H.神奇的字母(二) I.十字爆破 J.异或和之和 A. ...

  9. 牛客小白月赛28 J.树上行走

    牛客小白月赛28 J.树上行走 题目链接 题目描述 牛牛苦练武功绝学--轻功水上漂,最终没有练成,但是他学会了在树上行走的本领. 这天,牛牛落入了敌人的陷阱,身后有巨石追击,面前有n个点,n-1条边连 ...

最新文章

  1. angularjs 服务
  2. linux连接外部库时候编译,交叉编译时如何使用外部库?
  3. 域名是什么_企业注册域名要知道什么?如何企业域名注册?
  4. 学html css之前,学习CSS前必知HTML基础
  5. 【项目管理】------九大项目管理框架 (
  6. 什么是RIA 技术?
  7. python cox回归_TCGA+biomarker——多因素Cox回归
  8. XAMPP的安装及配置使用教程
  9. C#绘制CIE1931色度图
  10. html 时间控件滚动选择器,TimePicker
  11. 网页360浏览器极速模式能打开,兼容模式打不开
  12. 大厂面试通行证- Java基础
  13. OCP认证体系大揭秘
  14. 【华为OD机试真题 JS】IPv4地址转换成整数
  15. adi翻译_ADI是什么意思_ADI的翻译_音标_读音_用法_例句_爱词霸在线词典
  16. 4g上网宝显示无服务器,八天真实体验 华为EC5373 LTE上网宝
  17. Linux 如何设置代理
  18. Mac软件安装包和问题解决方案
  19. √C语言超星作业题--数组之删除重复元素
  20. 【综述】对抗样本生成及攻防技术综述

热门文章

  1. 哈工大软件构造笔记1
  2. DMPE-PEG-Mal,Maleimide-PEG-DMPE,二肉豆蔻酰磷脂酰乙醇胺-PEG-马来酰亚胺
  3. iOS compare用法
  4. c语言基础题(笔记四)
  5. 【Python】通过构造树结构解析查询条件
  6. 陕汽汉德、一汽集团信息化调研报告
  7. 如何下载网页中的json文件
  8. 第三章:晶体三极管及应用电路
  9. keil的sct文件_STM32 分散加载文件 .sct 解析
  10. 凉宫春日的忧郁第六章