HDU 1598 find the most comfortable road (枚举+Kruskal)
来源:互联网 发布:sql语句查询两张表 编辑:程序博客网 时间:2024/06/05 16:46
链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1598
题目:
Problem Description
XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流,每条SARS都对行驶在上面的Flycar限制了固定的Speed,同时XX星人对 Flycar的“舒适度”有特殊要求,即乘坐过程中最高速度与最低速度的差越小乘坐越舒服 ,(理解为SARS的限速要求,flycar必须瞬间提速/降速,痛苦呀 ),
但XX星人对时间却没那么多要求。要你找出一条城市间的最舒适的路径。(SARS是双向的)。
但XX星人对时间却没那么多要求。要你找出一条城市间的最舒适的路径。(SARS是双向的)。
Input
输入包括多个测试实例,每个实例包括:
第一行有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, 表示寻路的起终点。
第一行有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, 表示寻路的起终点。
Output
每个寻路要求打印一行,仅输出一个非负整数表示最佳路线的舒适度最高速与最低速的差。如果起点和终点不能到达,那么输出-1。
Sample Input
4 41 2 22 3 41 4 13 4 221 31 2
Sample Output
10
代码:
#include <iostream>#include <cstdio>#include <vector>#include <algorithm>#include <cmath>using namespace std;const int maxn = 210;int n , m ;int start , ender ;int ans = 0x7ffffff;typedef struct{ int x , y , s ;}road;int Set[maxn+10];vector<road>data;bool com(road a , road b){ return a.s < b.s ;}void init(){ for(int i = 0; i < maxn; i ++) Set[i] = i;}void input(){ road temp; for(int i = 0; i < m; i ++) { scanf("%d%d%d",&temp.x,&temp.y,&temp.s); data.push_back(temp); }}int findfather(int x){ if(x == Set[x]) return x ; return Set[x] = findfather(Set[x]);}void union_ab(int x , int y){ x = findfather(x); y = findfather(y); if(x != y) Set[x] = y;}void deal(){ ans = 0x7ffffff; for(int i = 0; i < (int)data.size(); i ++) { init(); for(int j = i; j < (int)data.size(); j ++) { if(findfather(data[j].x) != findfather(data[j].y)) { union_ab(data[j].x,data[j].y); } if(findfather(start) == findfather(ender)) { ans = min(ans , data[j].s - data[i].s); break; } } } if(ans == 0x7ffffff) printf("-1\n"); else printf("%d\n",ans);}int main(){ int q ; while(scanf("%d%d",&n,&m)!=EOF){ data.clear(); input(); sort(data.begin(),data.end(),com); scanf("%d",&q); for(int i = 0; i < q; i ++) { scanf("%d%d",&start,&ender); deal(); } } return 0;}
0 0
- HDU 1598 find the most comfortable road (枚举+Kruskal)
- HDU 1598 find the most comfortable road 枚举 + kruskal算法
- HDU 1598 find the most comfortable road (枚举+Kruskal)
- HDU 1598 find the most comfortable road (Kruskal + 枚举)
- HDU 1598 find the most comfortable road (暴力+kruskal)
- HDU-1598-find the most comfortable road(暴力枚举+Kruskal最小生成树)
- HDU 1598 find the most comfortable road 【枚举+(并查集)最小生成树Kruskal】
- HDU 1598 find the most comfortable road (枚举+Kruskal) 并查集
- hdu 1598 find the most comfortable road 枚举+最小成生树 kruskal 解题报告
- find the most comfortable road hdu 1598
- HDU-1598-find the most comfortable road
- hdu 1598 find the most comfortable road
- hdu 1598 find the most comfortable road
- HDU 1598 find the most comfortable road
- HDU 1598 find the most comfortable road
- hdu 1598 find the most comfortable road
- HDU 1598 find the most comfortable road
- hdu 1598 find the most comfortable road
- 老罗android 开发视频 百度网盘 更全
- DataTable中的Clone以及Select用法
- Copy Html To Clipboard
- python中把一数据库表 数据存入另一个数据库中
- if else 这点事
- HDU 1598 find the most comfortable road (枚举+Kruskal)
- 出现在嵌入式DSP上可用于实现各种编解码器
- 每天一个小程序(9)——链队
- showDialog IE与火狐兼容问题
- 设计模式学习之——六大设计原则之五:迪米特法则
- Haar 分类器
- KMP字符串模式匹配
- android Dalvik虚拟机
- android 程序控制GPS WIFI 蓝牙