P1038 -- 隧道

时间限制:1000MS      内存限制:65536KB

Description

一座小镇正在着手建造自己的地铁线路网。小镇坐落在许多小岛上,小岛之间通过隧道或者桥梁连接。地铁就在这些已有的桥梁和隧道的基础上建成。由于地铁主要是在地下,所以桥梁用得越少越好。小镇的居民希望能够仅通过地铁就能在任意两座小岛之间往返旅行。幸运的是,我们有足够多的隧道和桥梁来满足这个要求,所以不需要建造新的隧道或桥梁。你的任务是计算需要构建这样一个地铁线路网最少需要用到几座桥梁。

Input Format

输入包括K+M+1行,第一行包括三个数:N(1≤N≤10000),K(1≤K≤12000),M(1≤M≤12000)。其中N为小岛数量,K为隧道数量,M为桥梁数量,以下K行每行有两个数,表示相应的隧道连接的小岛的编号,再往下M行每行用同样的方式描述一座桥梁。

Output Format

输出仅包括一个数,即最少需要用到的桥梁数。

Sample Input

6 3 4
1 2
2 3
4 5
1 3
3 4
4 6
5 6

Sample Output

2

【题解】

本题,其实有很多地方是无用的:

“幸运的是,我们有足够多的隧道和桥梁来满足这个要求”

这句话保证了,我们肯定能够将这些小岛联通。

那么,我们只要并查集搞定隧道,然后再找出有几个根,即可搞定了,根本不需要读入m和后面的桥梁。

代码如下:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int pre[10010],r[10010];
 4 int findset(int x){
 5     int r=x;
 6     while(pre[r]!=r) r=pre[r];
 7     int i=x,j;
 8     while(i!=r) {
 9         j=pre[i];
10         pre[i]=r;
11         i=j;
12     }
13     return r;
14 }
15 int main() {
16     int n,k;
17     scanf("%d%d%*d",&n,&k);
18     for (int i=1;i<=n;++i) pre[i]=i;
19     while(k--) {
20         int a,b,f1,f2;
21         scanf("%d%d",&a,&b);
22         f1=findset(a);
23         f2=findset(b);
24         if(f1!=f2) pre[f1]=f2;
25     }
26     int cnt=0;
27     for (int i=1;i<=n;++i) if(pre[i]==i) cnt++;
28     printf("%d\n",cnt-1);
29     return 0;
30 }

View Code

转载于:https://www.cnblogs.com/TonyNeal/p/fzyzoj1038.html

[FZYZOJ 1038] 隧道相关推荐

  1. DCN-cs6200 ipv6 isatap 隧道

    DCN-cs6200 ipv6 isatap 隧道: SW-1配置: CS6200-28X-EI>enable CS6200-28X-EI#config terminal CS6200-28X- ...

  2. DCN-cs6200 ipv6 6to4隧道

    DCN-cs6200 ipv6 6to4隧道: SW-1配置: CS6200-28X-EI>enable CS6200-28X-EI#config terminal CS6200-28X-EI( ...

  3. DCN-2655 gre隧道 vpn 嵌入IPSec配置:

    DCN-2655 gre隧道 vpn 嵌入IPSec配置: RT1配置: Ip route 183.203.10.128 255.255.255.252 183.203.10.2 Interface ...

  4. crtsiii型无砟轨道板_山洞岩隧道无砟轨道施工快速推进

    11月29日,中铁二十局集团市政公司重庆铁路枢纽东环线项目山洞岩隧道无砟轨道施工快速推进. 山洞岩隧道全长3618米,为单洞双线隧道,最大埋深330米,进.出口地形斜交,设置偏压式明洞门,进.出口分别 ...

  5. WebGL 3D 工业隧道监控实战

    2019独角兽企业重金招聘Python工程师标准>>> 前言 监控隧道内的车道堵塞情况.隧道内的车祸现场,在隧道中显示当前车祸位置并在隧道口给与提示等等功能都是非常有必要的.这个隧道 ...

  6. POJ 1038 Bugs Integrated Inc (复杂的状压DP)

    \(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...

  7. ssh远程工具_Rsync如何利用SSH加密隧道同步文件

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本文主要讲解Linux系统中的Rsync如何利用SSH ...

  8. 马斯克为了解决堵车挖的隧道,已经堵上了

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 大数据文摘授权转载自果壳 作者:莎士比利 编辑:翻翻 今年一月,在拉斯维加斯举办的消费 ...

  9. 拿下赌场新客户,但马斯克“超级隧道”何时才能颠覆地面交通?

    来源:脑极体 埃隆·马斯克那家非常"Boring"的隧道公司,最近生意又热络了起来. 据媒体报道,在5月份完成美国拉斯维加斯会议中心的两条地下隧道之后,埃隆·马斯克的隧道公司(Bo ...

最新文章

  1. C++_动态绑定,再谈const,new,delete
  2. 工业云计算在中国工业领域的发展与应用趋势
  3. 为严苛而生,Lenovo ThinkSystem SR950优势尽显
  4. ce修改器传奇刷元宝_真原始传奇刷元宝方法 不封号刷元宝技巧
  5. 服务器用户配置文件在哪里找,管理远程桌面服务的用户配置文件
  6. 20155229 实验一《Java开发环境的熟悉》实验报告
  7. 单利 java_Java设计模式-单利模式
  8. requests session
  9. android夸项目调用
  10. C语言程序设计 授课日历 2010年春季
  11. Python pdf 转jpg/png工具
  12. plsqldev的配置
  13. 获取指定USB设备的VID PID和SerialNumber
  14. 最近开发了一个向QQ好友自动发送消息的程序
  15. Qt创建Qt Designer自定义控件及使用
  16. 实现一个多线程安全的单向有序链表,add单个结点、与其他链表合并
  17. 促使新网站快速增加百度收录的几个不外传技巧
  18. 【参赛作品66】快速搭建一套openGauss主备高可用集群
  19. matlab dae,matlab用ode15数值计算微分代数方程(DAE)的问题
  20. 什么是接口测试,我们如何实现接口测试?

热门文章

  1. 前端学习(3034):vue+element今日头条管理-markdown补充
  2. 前端学习(3024):vue+element今日头条管理-关于默认子路由的问题
  3. [html] 如何给table中的某一列设置固定宽度
  4. [vue] vue变量名如果以_、$开头的属性会发生什么问题?怎么访问到它们的值?
  5. 前端学习(2375):项目介绍结束
  6. “约见”面试官系列之常见面试题第八篇说说原型与原型链(建议收藏)
  7. 前端学习(1834):前端面试题之从url里面输入网址
  8. 前端学习(1553):复习2
  9. 前端学习(1305):项目依赖
  10. 前端学习(525):等分布局