并查集——hdu1213(入门)
传送门:How Many Tables
- 模板代入
- 判断几个连通分支
- DFS亦可完成
【并查集】
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std; const int maxn = 50005;
int n,m;
int a,b,ans;
int pre[maxn]; void init()
{
for(int i=1;i<=n;i++)
pre[i] = i;
} int findPre(int x)
{
if(pre[x] == x) return x;
return findPre(pre[x]); //并没有路径压缩
}
void unite(int x,int y)
{
int rx = findPre(x);
int ry = findPre(y);
if(rx==ry) return;
else pre[ry] = rx; //不是pre[y] = x;
} int main()
{
int flag=0,T;
cin>>T;
while(T--){
cin>>n>>m;
init();
ans = 0;
for(int i=1;i<=m;i++){
cin>>a>>b;
unite(a,b);
}
//判断连通分量的数量
for(int i=1;i<=n;i++){
if(i==pre[i]){
ans++;
}
}
cout<<ans<<endl;
}
return 0;
}
【DFS】
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
bool vis[1005],lj[1005][1005];
int n,m;
void dfs(int start)
{
vis[start]=false;
for(int i=1;i<=n;i++)
{
if(vis[i]&&lj[start][i])
{
vis[i]=false;
dfs(i);
}
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int a,b,cnt=0;
memset(vis,true,sizeof(vis));
memset(lj,false,sizeof(lj));
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
lj[a][b]=lj[b][a]=true;
}
for(int j=1;j<=n;j++)
{
if(vis[j])
{
//printf("%d\n",j);
cnt++;
dfs(j);
}
}
printf("%d\n",cnt);
}
return 0;
}
并查集——hdu1213(入门)的更多相关文章
- poj 2524:Ubiquitous Religions(并查集,入门题)
Ubiquitous Religions Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 23997 Accepted: ...
- hrbustoj 1073:病毒(并查集,入门题)
病毒Time Limit: 1000 MS Memory Limit: 65536 KTotal Submit: 719(185 users) Total Accepted: 247(163 user ...
- HDU 3047 带权并查集 入门题
Zjnu Stadium 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3047 Problem Description In 12th Zhejian ...
- hdu畅通工程(并查集)
Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道 ...
- 并查集_HDU 1232_畅通工程
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可). ...
- P2661 信息传递[最小环+边带权并查集]
题目来源:洛谷 题目描述 有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti 的同学. 游戏 ...
- HDU1213:How Many Tables(并查集入门)
-----------刷点水题练习java------------- 题意:给定N点,M边的无向图,问有多少个连通块. 思路:可以搜索; 可以并查集.这里用并查集练习java的数组使用,ans=N, ...
- hdu1272并查集入门
小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- HDU--1213并查集
题目传送门:HDU--1213 //题意:ignatius过生日,客人来到,他想知道他需要准备多少张桌子.然而一张桌子上面只能坐上相互熟悉的人, //其中熟悉可定义成为A与B认识,B与C认识,我们就说 ...
随机推荐
- js中的AJAX
AJAX:Asynchronous JavaScript and XML.意思就是用JavaScript执行异步网络请求. 如果仔细观察一个Form的提交,你就会发现,一旦用户点击Submit按钮,表 ...
- windows 安装pear & PHP_CodeSniffer
1. download https://pear.php.net/go-pear.phar 2. install pear(http://pear.php.net/manual/en/installa ...
- 29.You executed the following command to perform a backup of the USERS tablespace:
29.You executed the following command to perform a backup of the USERS tablespace:SQL> ALTER TABL ...
- java8新特性学习2
六.Stream API Java8中有两大最为重要的改变.第一个是 Lambda 表达式:另外一个则是 Stream API(java.util.stream.*).Stream 是 Java8 中 ...
- leetcode笔记(三)207. Course Schedule
题目描述(原题目链接) There are a total of n courses you have to take, labeled from 0 to n-1. Some courses may ...
- springboot的aop编程
以下内容是模仿杨开振<<深入浅出springboot 2.x>>的4.2章节内容. 开始前,需要先修改pom.xml,加入以下内容 <!-- https://mvnrep ...
- pip安装拓展包--网络超时/Read timed out问题
pip安装拓展包--网络超时/Read timed out问题 解决方案:切换镜像源(墙皮太厚) 在后面加上: -i https://pypi.douban.com/simple example: p ...
- Java源码解析——集合框架(四)——LinkedListLinkedList原码分析
LinkedList源码分析 LinkedList也和ArrayList一样实现了List接口,但是它执行插入和删除操作时比ArrayList更加高效,因为它是基于链表的.基于链表也决定了它在随机访问 ...
- php将html页面截图并保存成图片
采用html5的canvas,将图片绘制到画布上,然后用canvas的 toDataURL 方法. 但是在图片转base64的过程中遇到了两个问题, 1:图片无法绘制,转成的base64 用浏览器打开 ...
- wamp2.5怎么设置虚拟域名
换了台电脑~好不顺手.老大的机器上装的是wamp.几年没用差点连怎么设置虚拟域名都忘记了.自己写点东西~做个备忘吧. 首先,版本 然后在网上百度一堆七七八八的.做的时候没那么复杂.跟phpstudy差 ...