嗯...

题目链接:https://www.luogu.org/problemnew/show/P1536

思路:

  这道题可以看出是并查集的思想,然后用一个while嵌套一下,输入一条路的两个端点,就将这两个端点合并,表示这两个地方可以互相到达。然后从1到n for 一遍,如果这个点的父亲和它本身相同(即它并没有与其他任何的点并在一起),就将数量+1,注意现在的ans是点的个数,要修的路的个数即为点的个数减一。

AC代码:

 #include<cstdio>
#include<iostream>
#include<algorithm> using namespace std; int f[];
int n, m, x, y; inline int find(int x){
if(x != f[x])
f[x] = find(f[x]);
return f[x];
}//"查 " int main(){
while(true){
int ans = ;
scanf("%d", &n);
if(n == )
return ;//结束
scanf("%d", &m);
for(int i = ; i <= n; i++)
f[i] = i;
for(int i = ; i <= m; i++){
scanf("%d%d", &x, &y);
int r1 = find(x);
int r2 = find(y);
if(r1 != r2){
f[r1] = r2;
}//"并"
}
for(int i = ; i <= n; i++){
if(find(i) == i){//没与任何点并在一起
ans++;//点的个数
}
}
printf("%d\n", ans - );//要修的路的条数
}
return ;
}

AC代码

洛谷 P1536 村村通(并查集)的更多相关文章

  1. 洛谷—— P1536 村村通

    P1536 村村通 题目描述 某市调查城镇交通状况,得到现有城镇道路统计表.表中列出了每条道路直接连通的城镇.市政府“村村通工程”的目标是使全市任何两个城镇间都可以实现交通(但不一定有直接的道路相连, ...

  2. 洛谷 P1536 村村通

    目录 题目 思路 \(Code\) 题目 P1536 村村通 思路 并查集,一开始连通快的数量为\(n\),输入\(m\)条边时如果该边起点和终点不在同一联通块内就合并并让联通块数量减一,最后输出联通 ...

  3. [洛谷P1536]村村通

    题意:多组数据,当n为0时结束,每组数据表示有n个村子,m条路,求还需要建多少条路,使得所有的村子联通题解:用并查集求出有多少个联通块,然后求解 C++ Code: #include<cstdi ...

  4. bzoj3673 & bzoj3674 & 洛谷P3402 可持久化并查集

    题目:bzoj3673:https://www.lydsy.com/JudgeOnline/problem.php?id=3673 bzoj3674:https://www.lydsy.com/Jud ...

  5. 洛谷 3295 [SCOI2016]萌萌哒——并查集优化连边

    题目:https://www.luogu.org/problemnew/show/P3295 当要连的边形如 “一段区间内都是 i 向 i+L 连边” 的时候,用并查集优化连边. 在连边的时候,如果要 ...

  6. 洛谷P2024 食物链 [NOI2001] 并查集

    正解:并查集 解题报告: 传送门(咕了! 其实没有很难(虽然我是交了三发才过的QAQ 但是一来好久没打并查集了恢复一下智力 二来看着智推里唯一一个蓝就很不爽(,,,虽然做了这题之后又补上了个蓝题QAQ ...

  7. 洛谷P1197 [JSOI2008] 星球大战 [并查集]

    题目传送门 星球大战 题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系. 某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这 ...

  8. 洛谷 P1551 亲戚(并查集模板)

    嗯... 题目链接:https://www.luogu.org/problemnew/show/P1551 思路: 很显然地我们会发现,这是一道并查集的模板题,并且是考察了并查集中的”并“和”查“的操 ...

  9. 洛谷P1111修复公路并查集改

    看了他们的题解感觉很震惊,为什么要用kruskal,这题要用到最小生成树吗??? 38行短短的程序就可以了,我觉得学习不是一种套用,套自己学的,而且题解很大一部分都是kruskal. 个人认为自己的程 ...

随机推荐

  1. Uva 10820 Send a Table(欧拉函数)

    对每个n,答案就是(phi[2]+phi[3]+...+phi[n])*2+1,简单的欧拉函数应用. #include<iostream> #include<cstdio> # ...

  2. Java 使用itext生成pdf以及下载

    使用方法: 1.需要两个jar包: iText-5.0.6.jar    //必须使用该版本,否则缺少相关的方法 TextAsian.jar //是为了文档中正常显示中文所必须引用的包 TextAsi ...

  3. Git远程克隆仓库出现Permission denied (publickey)

    $ git clone git@github.com:DavidWanderer/test1.git Cloning into 'test1'... Warning: Permanently adde ...

  4. gulp之压缩css

    /** * css压缩 * npm install --save-dev gulp-minify-css * npm install --save-dev gulp-rename * * * 可参考: ...

  5. JS之事件监听

    一 如果事件监听类似于如下写法,则最终只会执行最后一个事件监听,其他监听都会被覆盖掉. window.onload=funtion(){console.log(1);}; window.onload= ...

  6. 问题11:如何进行反向迭代 & 如何实现反向迭代

    # 有关列表问题,参考:Python:列表list 案例: 需求:实现一个连续浮点数发生器FloatRange(和range类似),根据给定范围(start,end)和步进值(step),产生一系列连 ...

  7. web攻击之九:其它

    四.身份认证和会话 [攻击] 黑客在浏览器中停用JS,防止客户端校验,从而进行某些操作. [防御] 1.隐藏敏感信息. 2.对敏感信息进行加密. 3.session 定期失效 五.权限与访问控制 [攻 ...

  8. translate 实现元素垂直居中

    <div class="demo2"> <span>about me</span> </div> css .demo2{ width ...

  9. JavaScript设模式---单例模式

    单例模式也称为单体模式,其中: 1,单体模式用于创建命名空间,将系列关联的属性和方法组织成一个逻辑单元,减少全局变量. 逻辑单元中的代码通过单一的变量进行访问. 2,三个特点: ① 该类只有一个实例: ...

  10. Java Numbers

    通常情况下,当我们与数字打交道,使用原始数据类型,如字节,如int,long,double等 例子: int i = 5000; float gpa = 13.65; byte mask = 0xaf ...