02:宗教信仰
时间:2022-05-08
本文章向大家介绍02:宗教信仰,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
总时间限制: 5000ms内存限制: 65536kB描述
世界上有许多宗教,你感兴趣的是你学校里的同学信仰多少种宗教。
你的学校有n名学生(0 < n <= 50000),你不太可能询问每个人的宗教信仰,因为他们不太愿意透露。但是当你同时找到2名学生,他们却愿意告诉你他们是否信仰同一宗教,你可以通过很多这样的询问估算学校里的宗教数目的上限。你可以认为每名学生只会信仰最多一种宗教。
输入输入包括多组数据。
每组数据的第一行包括n和m,0 <= m <= n(n-1)/2,其后m行每行包括两个数字i和j,表示学生i和学生j信仰同一宗教,学生被标号为1至n。输入以一行 n = m = 0 作为结束。输出对于每组数据,先输出它的编号(从1开始),接着输出学生信仰的不同宗教的数目上限。样例输入
10 9
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
10 4
2 3
4 5
4 8
5 8
0 0
样例输出
Case 1: 1
Case 2: 7
第一眼:Tarjan
第二眼:刚刚眼瞎,,并查集带走
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<algorithm>
5 using namespace std;
6 const int MAXN=50001;
7 void read(int &n)
8 {
9 char c='+';int x=0;bool flag=0;
10 while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;}
11 while(c>='0'&&c<='9')
12 x=(x<<1)+(x<<3)+c-48,c=getchar();
13 flag==1?n=-x:n=x;
14 }
15 int n,m;
16 int fa[MAXN];
17 bool vis[MAXN];
18 int find(int x)
19 {
20 if(fa[x]==x)
21 return fa[x];
22 return fa[x]=find(fa[x]);
23 }
24 void unionn(int x,int y)
25 {
26 int fx=find(x);
27 int fy=find(y);
28 fa[fx]=fy;
29 }
30 int tot=0;
31 int main()
32 {
33 while(scanf("%d%d",&n,&m))
34 {
35 if(n==0&&m==0)break;
36 for(int i=1;i<=n;i++)
37 fa[i]=i;
38 memset(vis,0,sizeof(vis));
39
40 for(int i=1;i<=m;i++)
41 {
42 int x,y;
43 read(x);read(y);
44 if(find(x)!=find(y))
45 unionn(x,y);
46 }
47 int ans=0;
48 for(int i=1;i<=n;i++)
49 {
50 if(vis[find(i)]==0)
51 {
52 vis[find(i)]=1;
53 ans++;
54 }
55 }
56 printf("Case %d: %dn",++tot,ans);
57 }
58 return 0;
59 }
- 注册中心 Eureka 源码解析 —— 调试环境搭建
- 一样的代码、不一样的写法,JavaScript必知的简写技巧|附源代码
- 【死磕Java并发】-----J.U.C之读写锁:ReentrantReadWriteLock
- 数据库中间件 MyCAT源码分析——跨库两表Join
- iOS一种动态栅格布局方案
- 消息队列中间件 RocketMQ 源码分析 —— Message 存储
- 数据库中间件 MyCAT 源码解析 —— 分片结果合并(一)
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 路由(一)之分库分表配置
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 解析(六)之删除SQL
- 数据库[分库分表]中间件 Sharding-JDBC 源码分析 —— SQL 解析(五)之更新SQL解析
- ExtJs+WCF+LINQ实现分页Grid
- 数据库[分库分表]中间件 Sharding-JDBC 源码分析 —— SQL 解析(四)之插入SQL
- 基于sliverlight + wcf的web 文字版IM 示例
- 数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(三)之查询SQL
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MySQL 死锁产生原因和解决方法
- 手把手教你ShardingSphere和Mybatis拦截器实现特殊字段动态切换加密
- Swagger3.0官方starter诞生,可以扔掉那些野生starter了
- Prometheus 入门教程(一):Prometheus 快速入门
- 开发|ShiroConfig实现基础拦截
- 推荐几个 VS Code 扩展、主题和字体
- 万字长文 | 这可能是东半球最保姆级的后台服务器开发学习路线
- Python|对多角星的绘制
- Pythyon|当中秋遇上国庆
- 清华老哥要是会 screen,是不是就不用拖着电脑骑车了
- Python|用turtle画笔制作奥运五环
- 2 行代码,将 .NET 执行时间降低 87%!(附代码)
- Web渗透测试|SQL报错注入
- Python|运算符的运用
- Windows下登录凭证窃取技巧