题目背景

A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车。政府派人修复这些公路。

题目描述

给出A地区的村庄数N,和公路数M,公路是双向的。并告诉你每条公路的连着哪两个村庄,并告诉你什么时候能修完这条公路。问最早什么时候任意两个村庄能够通车,即最早什么时候任意两条村庄都存在至少一条修复完成的道路(可以由多条公路连成一条道路)

输入输出格式

输入格式:

第1行两个正整数N,M

下面M行,每行3个正整数x, y, t,告诉你这条公路连着x,y两个村庄,在时间t时能修复完成这条公路。

输出格式:

如果全部公路修复完毕仍然存在两个村庄无法通车,则输出-1,否则输出最早什么时候任意两个村庄能够通车。

输入输出样例

输入样例#1:

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

输出样例#1:

5

说明

N<=1000,M<=100000

x<=N,y<=N,t<=100000

题解:

这道题就是个裸并查集,先把数据按时间排个序,然后一条一条边加进来,如果u和v不连通(也就是它们的父亲不同),就把u和v连起来(也就是fa[father(u)] = father(v) ),此时把sum --(sum初值是n个点)

显然n个点的生成树只需要 n-1 条边,所以当sum等于1时,输出答案。

如果m条边都加进去sum仍然不为1时,则数据无解(输出-1)

Code:

#include<bits/stdc++.h>
using namespace std;struct edge{int u,v,t;
}e[100010];
int n,m;
int fa[1010];bool cmp(edge a,edge b)
{return a.t<b.t;
}int father(int x)
{if (fa[x] == x) return x;fa[x] = father(fa[x]);return fa[x];
}int main()
{scanf("%d %d",&n,&m);for (int i = 1 ; i <= m ; i ++)scanf("%d %d %d",&e[i].u,&e[i].v,&e[i].t);sort(e+1,e+1+m,cmp);for (int i = 1 ; i <= n ; i ++){fa[i] = i;}int sum = n;for (int i = 1 ; i <= m ; i ++){int u = father(e[i].u) , v = father(e[i].v); if (u != v){fa[u] = v;sum--;}if (sum == 1){printf("%d\n",e[i].t);return 0;}}cout<<-1<<endl;return 0;
}

  

转载于:https://www.cnblogs.com/YMY666/p/8710342.html

【洛谷】P1111 修复公路相关推荐

  1. 洛谷 P1111 修复公路(最小生成树)

    嗯... 题目链接:https://www.luogu.org/problemnew/show/P1111 这道题的关键是读懂题: 首先根据题中的一些扎眼的字眼我们可以判断这是一道用最小生成树来做的题 ...

  2. 洛谷 - P1111 - 修复公路 - 并查集

    https://www.luogu.org/problemnew/solution/P1111 并查集的水题,水题都错了好多发. 首先并不是有环就退出,而是连通分支为1才退出,每次合并成功连通分支才会 ...

  3. P1111 修复公路P1195 口袋的天空

    目录 P1111 修复公路 P1195 口袋的天空 P1111 修复公路 题目链接:https://www.luogu.com.cn/problem/P1111 标签:并查集,最小生成树 思路:本题用 ...

  4. P1111 修复公路(并查集)

    https://www.luogu.org/problem/P1111 题目背景 AA地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数NN ...

  5. P1111 修复公路

    题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车. 政府派人修复这些公路. 题目描述 给出A地区的村庄数N,和公路数M,公路是双向的. 并告诉你每条公路的连着哪两个村庄,并告诉你什 ...

  6. P1111 修复公路 (prim)

    题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你什么时 ...

  7. [LUOGU] P1111 修复公路

    题目背景A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路.题目描述给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你什么时候能修 ...

  8. 【题解】luogu p1111 修复公路

    并查集 总结: 1.并查集板子掌握不熟练 #include<bits/stdc++.h> using namespace std; int n, m, fa[1005], t, sum[1 ...

  9. 洛谷or牛客数据结构+算法

    栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈 ...

最新文章

  1. Elasticsearch对垒8大竞品技术,孰优孰劣?
  2. redis集群部署步骤
  3. 运算放大器的好坏判别方法
  4. CSS中的四种样式及选择器
  5. string截取某个字符串之前的_python String字符串操作
  6. 百度2019暑期实习计算机视觉岗位笔试题
  7. cygwin swoole_swoole入门--------基础概念
  8. SQL Server 2005/2008 导入导出数据常见报错
  9. (转载)UI接口分层自动化测试框架设计思想
  10. python3集合(set)
  11. linux vmware 服务,学习笔记:在Linux虚拟机上搭建node服务
  12. How to read MANIFEST.MF file from JAR using Bash
  13. 竞赛成绩管理系统用c语言编写,学生成绩管理系统代码(c语言编写).doc
  14. 【转】Ubuntu 16.04安装配置TensorFlow GPU版本
  15. Vue2.5.1+Spring支持分销、团购、秒杀、优惠券、微信商城项目,源码免费分享
  16. stm32f207/stm32f407擦除内部flash讲解
  17. CMake常用命令(一) cmake_minimum_required命令
  18. 句子迷,语录,苏引华
  19. 理解单调栈与单调队列
  20. java 格式化输出xml_Java格式化输出Xml

热门文章

  1. vue头像加白边_Vue头像处理方案小结
  2. 我和计算机比本领教案反思,《比本领》教学设计及反思
  3. mysql 存储过程临时表_在MySQL存储过程中创建的临时表的范围
  4. php栏目树,php生成无限栏目树的代码实例分享
  5. 解封装(九):av_read_frame和av_seek_frame代码示例分析内存占用和清理情况
  6. 火线精英手游服务器维护,火线精英手机版登录失败进不去解决办法
  7. php怎么让视频自动播放,怎样让优酷等视频实现自动播放
  8. Web Audio API 入门1
  9. 图解TCPIP-DNS
  10. Java MyBatis 别名