hrbust 病毒 并查集
来源:互联网 发布:国事访问知乎 编辑:程序博客网 时间:2024/05/16 10:20
找不到题号了
Description
某种病毒袭击了某地区,该地区有N(1≤N≤50000)人,分别编号为0,1,…,N-1,现在0号已被确诊,所有0的直接朋友和间接朋友都要被隔离。例如:0与1是直接朋友,1与2是直接朋友,则0、2就是间接朋友,那么0、1、2都须被隔离。现在,已查明有M(1≤M≤10000)个直接朋友关系。如:0,2就表示0,2是直接朋友关系。
请你编程计算,有多少人要被隔离。
Input
第一行包含两个正整数N(1≤N≤50000),M(1≤M≤100000),分别表示人数和接触关系数量;
在接下来的M行中,每行表示一次接触,;
每行包括两个整数U, V(0 <= U, V < N)表示一个直接朋友关系。
Output
输出数据仅包含一个整数,为共需隔离的人数(包含0号在内)。
Sample Input
100 4
0 1
1 2
3 4
4 5
Sample Output
3
小黑胖子给我讲的,讲的可明白了,并查集的第一道题;
代码:
#include <stdio.h>int fa[50005],n,m,x,y;void init(){ for(int i = 0;i < n;++i) fa[i] = i;}int find(int x){ return fa[x]!=x?fa[x] = find(fa[x]):fa[x];}void unin(int a,int b){ if(a>b) fa[find(a)] = find(b); else fa[find(b)] = find(a); return;}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { init(); while(m--) { scanf("%d%d",&x,&y); unin(x,y); } int ans = 0; for(int i = 0;i < n;++i) { if(find(i)==fa[0]) ans++; } printf("%d\n",ans); } return 0;}
阅读全文
0 0
- hrbust 病毒 并查集
- hrbust 1073 病毒(并查集入门)
- 并查集 hrbust 1725
- hrbust 1725 并查集 (节点存放感染病毒信息)
- HRBUST 1793 离线并查集
- HRBUST 1418 并查集偏移
- hrbust 2240 带权并查集
- HRBUST 2189 节点的连接 (并查集)
- hrbust 哈理工oj 2026 势力较量【并查集】
- 哈理工oj hrbust 1725 Virus Outbreaking【并查集】
- hrbust 哈理工oj1490 咒语【基础并查集】
- Hrbust 2222 应援团补完计划【并查集+思维】好题~
- hrbust 2189 节点的连接(并查集)
- Hrbust 1537 安置囚犯【并查集+二维费用背包】
- 【并查集】感冒病毒 suspects
- 并查集—Hrbustoj 1073 病毒
- hrbust1073 病毒 (并查集)
- SARS病毒传染 并查集
- 云星数据---Scala实战系列(精品版)】:Scala入门教程022-Scala实战源码-Scala 多态01
- vue 循环出来的数据不能记录长度
- oracle 系统表空间满了
- 9. 面向对象 -- 多态、抽象、接口
- leetcode120 Triangle
- hrbust 病毒 并查集
- 判断二叉树是否是搜索二叉树和完全二叉树
- css设置元素水平垂直居中的方法
- eclipse如何重新编译项目
- Go Eclipse插件
- Hadoop之HDFS文件操作
- leetcode 134. Gas Station
- mt6735 “提示音和通知”中试听手机铃声时来电,来电铃声和预览铃声声音重叠
- 如何高效排查系统故障?一分钱引发的系统设计“踩坑”案例