【HDOJ1598】【枚举+最小生成树】
http://acm.hdu.edu.cn/showproblem.php?pid=1598
find the most comfortable road
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 8648 Accepted Submission(s): 3648
但XX星人对时间却没那么多要求。要你找出一条城市间的最舒适的路径。(SARS是双向的)。
第一行有2个正整数n (1<n<=200)和m (m<=1000),表示有N个城市和M条SARS。
接下来的行是三个正整数StartCity,EndCity,speed,表示从表面上看StartCity到EndCity,限速为speedSARS。speed<=1000000
然后是一个正整数Q(Q<11),表示寻路的个数。
接下来Q行每行有2个正整数Start,End, 表示寻路的起终点。
1 2 2
2 3 4
1 4 1
3 4 2
2
1 3
1 2
0
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<queue>
- #include<algorithm>
- using namespace std;
- struct edge{
- int to;
- int from;
- int len;
- }EDGE[];
- int pre[];
- int n,m;
- bool cmp(struct edge qaq,struct edge qwq)
- {
- return qaq.len<qwq.len;
- }
- int find(int x)
- {
- int xx=x;
- while(x!=pre[x])
- {
- x=pre[x];
- }
- while(pre[xx]!=x)
- {
- int t=pre[xx];
- pre[xx]=x;
- xx=t;
- }
- return x;
- }
- int main()
- {
- while(scanf("%d%d",&n,&m)==)
- {
- int mmax=;
- int tot=;
- // int mmin=1000005;
- while(m--)
- {
- int a,b,c;
- scanf("%d%d%d",&a,&b,&c);
- EDGE[tot].from=a;
- EDGE[tot].to=b;
- EDGE[tot++].len=c;
- }
- sort(EDGE,EDGE+tot,cmp);
- int orz;
- scanf("%d",&orz);
- while(orz--)
- {
- int mmin=-;
- int orz1,orz2;
- scanf("%d%d",&orz1,&orz2);
- for(int i = ; i < tot ; i++)//枚举最小值
- {
- bool flag=false;
- for(int j = ; j <= n ; j++)//复位父节点
- pre[j]=j;
- int wqw=EDGE[i].len;
- int waw=EDGE[i].len;
- pre[find(EDGE[i].from)]=find(EDGE[i].to);
- for(int j = i+ ; j < tot ; j++)
- {
- if(find(orz1)==find(orz2))//如果已经连通就记录最大值并跳出
- {
- flag=true;
- break;
- }
- else
- {
- pre[find(EDGE[j].from)]=find(EDGE[j].to);//更新所求的【最大权值-最小权值】的最小值
- waw=EDGE[j].len;
- }
- }
- if(flag){
- if(mmin==-)mmin=waw-wqw;
- mmin=min(waw-wqw,mmin);
- }
- else
- {
- break;
- }
- }
- printf("%d\n",mmin);
- }
- }
- return ;
- }
【HDOJ1598】【枚举+最小生成树】的更多相关文章
- UVA1395 Slim Span(枚举最小生成树)
题意: 求最小生成树中,最大的边减去最小的边 最小值. 看了题解发现真简单=_= 将每条边进行从小到大排序,然后从最小到大一次枚举最小生成树,当构成生成树的时候,更新最小值 #include < ...
- CSU 1116 Kingdoms(枚举最小生成树)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1116 解题报告:一个国家有n个城市,有m条路可以修,修每条路要一定的金币,现在这个国家只 ...
- Poj(2784),二进制枚举最小生成树
题目链接:http://poj.org/problem?id=2784 Buy or Build Time Limit: 2000MS Memory Limit: 65536K Total Sub ...
- HDU 2489 Minimal Ratio Tree(dfs枚举+最小生成树)
想到枚举m个点,然后求最小生成树,ratio即为最小生成树的边权/总的点权.但是怎么枚举这m个点,实在不会.网上查了一下大牛们的解法,用dfs枚举,没想到dfs还有这么个作用. 参考链接:http:/ ...
- HDU 2489 Minimal Ratio Tree (DFS枚举+最小生成树Prim)
Minimal Ratio Tree Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) ...
- hdu 2489(枚举 + 最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2489 思路:由于N, M的范围比较少,直接枚举所有的可能情况,然后求MST判断即可. #include ...
- hdu1598 find the most comfortable road 枚举+最小生成树
#include<cstdio> #include<cstring> #include<algorithm> #define MAXN 210 #define IN ...
- URAL 1416 Confidential --最小生成树与次小生成树
题意:求一幅无向图的最小生成树与最小生成树,不存在输出-1 解法:用Kruskal求最小生成树,标记用过的边.求次小生成树时,依次枚举用过的边,将其去除后再求最小生成树,得出所有情况下的最小的生成树就 ...
- poj 3522(最小生成树应用)
题目链接:http://poj.org/problem?id=3522思路:题目要求最小生成树中最大边与最小边的最小差值,由于数据不是很大,我们可以枚举最小生成树的最小边,然后kruskal求最小生成 ...
随机推荐
- 基础数据类型的坑和集合及深浅copy
一.基础数据类型的坑: 元组: 如果一个元组中,只有一个元素,且没有逗号,则该"元组"与里面的数据的类型相同. # 只有一个数据,且没有逗号的情况: print(tu1,type( ...
- mysql 下载资源地址
http://mirror.neu.edu.cn/mysql/Downloads/MySQL-5.6/
- redis系列--主从复制以及redis复制演进
一.前言 在之前的文章已经详细介绍了redis入门基础已经持久化相关内容包括redis4.0所提供的混合持久化. 通过持久化功能,Redis保证了即使在服务器宕机情况下数据的丢失非常少.但是如果这台服 ...
- vue-router-4-编程式导航
想要导航到不同的 URL,用 router.push 方法,会向 history 栈添加一个新的记录 <router-link> <==>router.push // 字符串 ...
- Docker小白从零入门到实战系列【二】
1.安装好Centos 7 2.关闭SELINUX sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/configsetenfo ...
- transform带来的坑
1.transform会使子元素fixed定位和absolute定位失效. 2.父元素设置了border-radius和overflow:hidden, 但是子元素有transform属性,父元素设置 ...
- 使用ext httpProxy代理获取列表但列表展示不全的问题解决
今天项目中遇到一个奇葩的事情,使用ext的jsonstore通过httpproxy代理想要获取一个列表,页面显示是有五条数据的但是却只展示了2条,于是各种排查,后台确定无误后开始检查前台,发现浏览器中 ...
- Vue项目初始化
1. 生成项目模板 vue init <模板名> 本地文件夹名称2. 进入到生成目录里面 cd xxx npm install3. npm run dev vue项目模板介绍: simpl ...
- C# 解压
需要ICSharpCode.SharpZipLib.dll 网上有很多 先添加文件引用 再添加引用 using ICSharpCode.SharpZipLib.Zip; #region 解压 /// ...
- Python 基于队列的进程通信
from multiprocessing import Process,Queue def f1(q): q.put('约吗?') if __name__ == '__main__': q = Que ...