题目链接

题目链接

题解

要求所有的路径中最小边长的最大值!

我们贪心的加边,依照边从大往小的方式往里添加,然后合并并查集。
每次当查询分布在两个待合并的并查集的时候,当前的边长就是这次查询的答案。

我们对每个并查集维护一个集合,集合中保存的内容就是一个点在这个并查集中,而另一个点不在这个并查集中的询问编号。

当待合并的两个并查集所具有的集合里面拥有相同的询问编号时候,回答这个询问编号,然后把小的集合向大的集合合并,并将回答完的询问编号从集合中移除。

这是一个离线算法。

代码

#include <bits/stdc++>
using namespace std;
int n,m,q;
set<int>::iterator it;
const int maxm = 50005;
const int maxn = 11111;
set<int> Q[11111];
struct edge{int u,v,cost;friend bool operator <(edge e1,edge e2){return e1.cost > e2.cost;}
}es[maxm];
int ans[maxm];
int parent[maxn];
int find(int x){return x == parent[x]?x:parent[x] = find(parent[x]);
}
int main(){memset(ans,-1,sizeof(ans));for(int i = 1;i < maxn;++i)parent[i] = i;scanf("%d%d",&n,&m);for(int i = 0;i < m;++i)scanf("%d%d%d",&es[i].u,&es[i].v,&es[i].cost);sort(es,es+m);scanf("%d",&q);for(int i = 0;i < q;++i){int x,y;scanf("%d%d",&x,&y);Q[x].insert(i);Q[y].insert(i);}for(int i = 0;i < m;++i){int x = es[i].u,y = es[i].v,c = es[i].cost;int px = find(x),py = find(y);if(px == py) continue;else{if(Q[px].size() > Q[py].size())swap(px,py);vector<int> tmp;for(it = Q[px].begin();it != Q[px].end();++it){int id = *it;if(Q[py].count(id)){ans[id] = c;tmp.push_back(id);}Q[py].insert(id);}for(int i = 0;i < tmp.size();++i)Q[py].erase(tmp[i]);parent[px] = py;}}for(int i = 0;i < q;++i)printf("%d\n",ans[i]);
}

洛谷 P1967货车运输 并查集+贪心 不需要用LCA!相关推荐

  1. 【杂题总汇】NOIP2013(洛谷P1967) 货车运输

    [洛谷P1967] 货车运输 重做NOIP提高组ing... +传送门-洛谷P1967+ ◇ 题目(copy from 洛谷) 题目描述 A国有n座城市,编号从1到n,城市之间有m条双向道路.每一条道 ...

  2. noip 2013 洛谷 P1967 货车运输

    题目:货车运输 大致题意: 给出一张无向带权图,对于m个询问(X,Y),要求找出X到Y的一条路径使得路径上的最小边权最大,并输出这个最小边权. 思路: 可以看出,X到Y的满足条件的路径一定在原图的最大 ...

  3. 【洛谷 P7299】 【并查集】 Dance Mooves S

    [洛谷 P7299] [并查集] Dance Mooves S 题目 解题思路 可以先求出k轮后i能到达next[i] 可以发现将会组成由很多个简单环组成的图,它们能到达的点可以共享给同一个环内的 所 ...

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

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

  5. 洛谷T1967 货车运输 Kruskal最大生成树倍增LCA

    这题的题意是:对于每组x.y,求x到y路径上最小边权的最大值. 于是可以使用最大生成树,因为最大生成树满足性质:生成树中最小边权最大,且任意两点间路径上最小边权最大. 有了树之后,要求路径,那就要考虑 ...

  6. 洛谷P1551 亲戚(并查集)

    题目链接 思路: 并查集的模板题目 关于并查集相关知识可以看此博客 AC代码 #include<iostream> #include<cstdio> #include<a ...

  7. 每日一题——洛谷 P1551 亲戚 (并查集)

    大家好,我是爬行系,今天打卡并查集相关例题 文章目录 并查集 1.概念 2.模板 例题 1.题目描述 2.AC代码 更多练习题 总结 并查集 1.概念 并查集的思想是用一个数组表示了整片森林(pare ...

  8. 洛谷 - P4997 - 不围棋 - 并查集 - 模拟

    https://www.luogu.org/problemnew/show/P4997 首先是改变气的定义,使得容易计算,这个很好理解. 然后使用并查集,因为要维护整个连通块的性质. 最后的难点在于, ...

  9. 洛谷1967货车运输

    题目:https://www.luogu.org/problemnew/show/P1967 倍增LCA裸题.用了在线.还有离线O(n)做法.树链剖分做法,暂不管了. (自己程序的)坑点:1.xnt从 ...

最新文章

  1. linux c fopen open 互相转换 文件指针 到 文件描述符 FILE* 转 FD
  2. httpclient base64 文件上传_文件上传下载
  3. java 自带写日志包_jdk自带的日志工具实操总结(亲测有效)
  4. 论坛用的两个函数:积分计算排名和楼层函数
  5. linux crypto cbc 接口,Linux 2.6.38.4: User-space interface for Crypto API
  6. C语言实现单向链表、双向链表、循环链表
  7. python网络爬虫系列教程——python中lxml库应用全解(xpath表达式)
  8. java学习笔记④MySql数据库--01/02 database table 数据的增删改
  9. socket 支持 ipv6
  10. DAS-DVS分布式光纤振动传感-发展现状与未来趋势分析(华为光纤传感新产品Huawei OptiXsense EF3000)
  11. 如何强制升级索尼sony tablet s android 4.0,【S丶Tablet】教你root Tablet S 4.0.3 R5
  12. 解决Chrome 的右键谷歌网页翻译失效 20221107更新
  13. 人工智能剥夺就业岗位?不妨听听马斯克是如何建议的
  14. Laravel的介绍安装和启动
  15. 港科资讯 | 北京海外高层次人才协会与香港科技大学创业中心合作谅解备忘录签约...
  16. UVA-10347 Medians 计算几何 中线定理
  17. 全网详解如何设计数据库的ER图,即实体关系图
  18. 数据传输加密非对称加密算法以及对称算法-RSA+AES
  19. leetcode 1217. Play with Chips
  20. DSSD(Deconvolutional Single Shot Detector)

热门文章

  1. 7-7 硬币找钱问题 (10 分)(思路+详解+double类型数据的处理)Come baby!!!!!!!!!!!!!!!!!!!!
  2. 「软件项目管理」软件项目范围计划——需求管理与任务分解
  3. android交叉编译libxml2,Openwrt 交叉编译libxml2(示例代码)
  4. [C++11]推荐使用auto的场景
  5. [PAT乙级]1016 部分A+B
  6. java 日志乱码_【开发者成长】JAVA 线上故障排查完整套路!
  7. word List 46
  8. 使用refs获取节点_闲庭信步聊前端 - 原来你是这样的Refs
  9. P6329 【模板】点分树 | 震波
  10. 【CF487E】Tourists【圆方树】【树链剖分】【multiset】