[LUOGU] P1111 修复公路
题目背景
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
注意的几个地方
- 无向图
- 两倍数组大小
- 要求的不是边权之和,是最大的一条边
//Writer:GhostCai && His Yellow Duck
#include<iostream>
#include<algorithm>
#define MAXN 200005
using namespace std;
int m,n;
int ans,links;
int fa[MAXN];
int fnd(int x){
return (fa[x]==x)?x:fa[x]=fnd(fa[x]);
}
void cat(int x,int y){
x=fnd(x);y=fnd(y);
if(y!=x) fa[y]=x;
}
struct Edge{
int from,to,next,w;
}e[MAXN];
int ecnt;
inline void add(int x,int y,int w){
e[++ecnt].to = y;
e[ecnt].w = w;
e[ecnt].from = x;
}
bool cmp(Edge x,Edge y){
return x.w < y.w ;
}
int main(){
cin>>n>>m;
int x,y,w;
for(int i=1;i<=n;i++) fa[i]=i;
for(int i=1;i<=m;i++){
cin>>x>>y>>w;
add(x,y,w);
add(y,x,w);
}
sort(e+1,e+1+ecnt,cmp);
for(int i=1;i<=ecnt;i++){
x=e[i].from ,y=e[i].to ;
x=fnd(x);y=fnd(y);
if(x!=y){
cat(x,y);
// ans+=e[i].w ;
ans=max(ans,e[i].w);//!!
links++;
}
}
// cout<<ans<<endl;
if(links!=n-1) cout<<-1<<endl;
else cout<<ans<<endl;
return 0;
}
[LUOGU] P1111 修复公路的更多相关文章
- P1111 修复公路
P1111 修复公路 550通过 1.6K提交 题目提供者该用户不存在 标签并查集 难度普及/提高- 提交该题 讨论 题解 记录 题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通 ...
- Luogu 1111 修复公路(最小生成树)
Luogu 1111 修复公路(最小生成树) Description A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 给出A地区的村庄数N,和公路数M,公路是双向的 ...
- 洛谷 P1111 修复公路
题目链接 https://www.luogu.org/problemnew/show/P1111 以后只发题目链接!!! 题目大意 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连 ...
- 洛谷 P1111 修复公路(最小生成树)
嗯... 题目链接:https://www.luogu.org/problemnew/show/P1111 这道题的关键是读懂题: 首先根据题中的一些扎眼的字眼我们可以判断这是一道用最小生成树来做的题 ...
- P1111 修复公路 洛谷
https://www.luogu.org/problem/show?pid=1111 题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地 ...
- 洛谷P1111 修复公路
题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你什么时 ...
- 洛谷 P1111 修复公路 Label:并查集
题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你什么时 ...
- (最小生成树 并查集)P1111 修复公路 洛谷
题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你什么时 ...
- P1111 修复公路(并查集)
题目背景 AA地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数NN,和公路数MM,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你 ...
随机推荐
- 用shell脚本监控MySQL主从同步
企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员.提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:阶段1:开发一个守护进程脚本每30秒 ...
- SpringBoot | 启动异常 | 显示bulid success 无 error信息
可能原因是没有添加 web 依赖,检查pom里面是否有web <dependency> <groupId>org.springframework.boot</groupI ...
- VLAN-1-VLAN配置
f0/12和f0/24不在列表中,因为它们动态地成为trunk,支持多个vlan “unsup”意为这个2950交换机不支持FDDI和TR 首先 switchport mode ...
- c# 参数传递问题(形参与实参)
形参是指被调用方法中的参数 实参是指传递给方法的参数 (1)值类型传参是按值传递 值类型传参,形参接受到的是实参的一个副本,即形参发生变化,实参不会发生任何变化 (2)引用类型参数按值传递 当参数传递 ...
- Qt 进程和线程之二:启动线程
Qt提供了对线程的支持,这包括一组与平台无关的线程类.一个线程安全的发送事件的方式,以及跨线程的信号槽的关联.这些使得可以很容易地开发可移植的多线程Qt应用程序,可以充分利用多处理器的机器.多线程编程 ...
- Script to Monitor Current User Activity in the Database
Execution Environment: SQL, SQL*Plus, iSQL*Plus Access Privileges: Requires select privileges on vie ...
- bio,nio,aio简介
https://mp.weixin.qq.com/s/F9WwcsFdCOwOeeDc0oc98w——<BIO,NIO,AIO 总结>总结和对比这三种的区别 https://www.jia ...
- 113 Path Sum II 路径总和 II
给定一个二叉树和一个和,找到所有从根到叶路径总和等于给定总和的路径.例如,给定下面的二叉树和 sum = 22, 5 / \ 4 ...
- 判断EditText输入的字符串中是否包含有emoji表情
我们在实际的开发中经常需要用到EditText 但是有一个不好的地方就是我们在前端用EditText输入了带有emoji表情的字符串之后 服务器是无法识别的,这就需要我们前端根据需求来决定表情的去留, ...
- mac Latex dvipdfm 缺少字体错误 Failed to read UCS2/UCS4 TrueType cmap
dvipdfmx 命令产生 ** ERROR ** Failed to read UCS2/UCS4 TrueType cmap... 错误的原因是没有把 simsun.ttf simkai.ttf ...