find the most comfortable road

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10784 Accepted Submission(s): 4506

Problem Description
XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure—超级空中漫游结构)进行交流,每条SARS都对行驶在上面的Flycar限制了固定的Speed,同时XX星人对 Flycar的“舒适度”有特殊要求,即乘坐过程中最高速度与最低速度的差越小乘坐越舒服 ,(理解为SARS的限速要求,flycar必须瞬间提速/降速,痛苦呀 ),
但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, 表示寻路的起终点。

Output
每个寻路要求打印一行,仅输出一个非负整数表示最佳路线的舒适度最高速与最低速的差。如果起点和终点不能到达,那么输出-1。

Sample Input
4 4
1 2 2
2 3 4
1 4 1
3 4 2
2
1 3
1 2

Sample Output
1
0

Author
ailyanlu

Source
HDU 2007-Spring Programming Contest - Warm Up (1)

问题链接:HDU1598 find the most comfortable road
问题简述:给定一个无向图,每条边代表两点间的通行速度。指定若干起点和终点,计算从起点到终点的路径的最小速度差。若无法从起点到终点,则输出-1。
问题分析
    本题需要用到最小生成树原理,通过枚举进行计算。
    给出2个解法程序。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* HDU1598 find the most comfortable road */#include <bits/stdc++.h>using namespace std;const int N = 200;
int f[N + 1];
void UFInit(int n)
{for(int i = 0; i <= n; i++)f[i] = i;
}int Find(int a) {return a == f[a] ? a : f[a] = Find(f[a]);
}void Union(int a, int b)
{if ((a = Find(a)) != (b = Find(b))) f[a] = b;
}int main()
{int n, m;while(~scanf("%d%d", &n, &m)) {vector<pair<int, pair<int, int> > > g(m);for(int i = 0; i < m; i++)scanf("%d%d%d", &g[i].second.first, &g[i].second.second, &g[i].first);sort(g.begin(), g.end());   // 从小到大int q;scanf("%d", &q);while(q--) {int u, v, ans = INT_MAX;scanf("%d%d", &u, &v);for(int i = 0; i < m; i++) {UFInit(n);for(int j = i; j < m; j++) {Union(g[j].second.first, g[j].second.second);if(Find(u) == Find(v))ans = min(ans, g[j].first - g[i].first);}if(ans == INT_MAX) break;}if(ans == INT_MAX) printf("-1\n");else printf("%d\n", ans);}}return 0;
}

AC的C++语言程序如下:

/* HDU1598 find the most comfortable road */#include <bits/stdc++.h>using namespace std;const int N = 200;
int f[N + 1];
void UFInit(int n)
{for(int i = 0; i <= n; i++)f[i] = i;
}int Find(int a) {return a == f[a] ? a : f[a] = Find(f[a]);
}void Union(int a, int b)
{if ((a = Find(a)) != (b = Find(b))) f[a] = b;
}const int M = 1000;
struct Edge {int u, v, w;
} e[M];bool cmp(Edge a, Edge b)
{return a.w < b.w;
}int main()
{int n, m;while(~scanf("%d%d", &n, &m)) {for(int i = 0; i < m; i++)scanf("%d %d %d", &e[i].u, &e[i].v, &e[i].w);sort(e, e + m, cmp);    // 从小到大int q;scanf("%d", &q);while(q--) {int u, v, ans = INT_MAX;scanf("%d%d", &u, &v);for(int i = 0; i < m; i++) {UFInit(n);for(int j = i; j < m; j++) {Union(e[j].u, e[j].v);if (Find(u) == Find(v))ans = min(ans, e[j].w - e[i].w);}if(ans == INT_MAX) break;}if(ans == INT_MAX) printf("-1\n");else printf("%d\n", ans);}}return 0;
}

HDU1598 find the most comfortable road【枚举+并查集+最大生成树】相关推荐

  1. hdu1589(枚举+并查集)

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  2. BZOJ 1050: [HAOI2006]旅行comf(枚举+并查集)

    [HAOI2006]旅行comf Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点 ...

  3. POJ 1944 Fiber Communications (枚举 + 并查集 OR 线段树)

    题意 在一个有N(1 ≤ N ≤ 1,000)个点环形图上有P(1 ≤ P ≤ 10,000)对点需要连接.连接只能连接环上相邻的点.问至少需要连接几条边. 思路 突破点在于最后的结果一定不是一个环! ...

  4. 图论500题 ---- (枚举+并查集)求图上路径权值差值最小 HDU find the most comfortable road

    题目链接 解题思路: 对于两个点的路径假设我们把边按照边权进行排序那么,再把边依次加入图中判断两点的联通性,那么这个边就是两个点联通的最小的最大值,但是最大的最小值怎么找? 因为我们是把边权按照从小到 ...

  5. hdu 1598 find the most comfortable road (并查集+枚举)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1598 find the most comfortable road Time Limit: 1000/ ...

  6. Find the most comfortable road(HDU-1598)

    Problem Description XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流,每条SARS都对行驶 ...

  7. ACM--steps--dyx--5.1.4--find the most comfortable road

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (J ...

  8. HDOJ 1598 find the most comfortable road(并查集+贪心)

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  9. hdu 1598 find the most comfortable road

    题意:给出一幅无向图,每次询问给出起点和终点,求起点到终点权值差最小的一条路,输出权值差: 思路:边按权值排序,利用并查集枚举每次能使起点终点联通的情况下权值差,并每次更新最小值: #include& ...

最新文章

  1. Web框架之Django_09 重要组件(Django中间件、csrf跨站请求伪造)
  2. redis 服务器/客户端安装与配置
  3. ansible2.4 api调用
  4. Spring+SpringMVC +MyBatis整合配置文件案例66666
  5. Android 系统(88)---Android关键字persistent
  6. 科大讯飞语音识别率从97%提升至98% 用AI赋能方言保护
  7. Kotlin实战【六】Kotlin中集合的创建
  8. Emacs中打造强大的Python IDE
  9. 银联在线php支付接口,PHP网站在线银联支付实现大额付款案例
  10. 超链接去掉下划线代码
  11. 制作“玄”字logo
  12. Codeforces Round #714 (Div. 2) B. AND Sequences (思维)
  13. wow服务器维护通告,新一轮大服务器实装公告:4月2日凌晨维护
  14. Envoy 架构、术语与基本配置解析
  15. 【春节旅游攻略】南京周边出发,小众又好玩的景点推荐
  16. WIn10 1909 Windows Hello 指纹:出现错误,请稍后再试一次
  17. 2018华为软件精英挑战赛经验(一)
  18. Elasticity Detection:A Building Block for Internet Congestion Control读后感
  19. 虚拟主机.htaccess伪静态(URL重写)建立多站点
  20. 客户管理是企业利润的根本,企业如何进行客户管理呢?

热门文章

  1. Android ListView常用用法(二)
  2. java protobuffer 网络_C#与Java通过protobuf进行网络通信过程中遇到的问题
  3. 仿苹果涂鸦软件_ipad平板电脑有哪些绘画软件?
  4. python数据分析与挖掘实战pdf_《Python数据分析与挖掘实战》PDF+完整源码
  5. id 怎么获取jira 评论_【JIRA】如何快速地批量查找各迭代的SprintID
  6. linux部署多个jar 会宕机_我常用的自动化部署技巧,贼好用,推荐给大家!
  7. school_vue操作记录
  8. fuelux.tree,动态加载
  9. Spark常用算子讲解一
  10. Linux下安装ActiveMQ(CentOS7)