• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

╰☆惔、煙菋

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

HDU_1598 find the most comfortable road

                  find the most comfortable road

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
这题刚开始看的时候,觉得是最短路,但又想了一下,用最短路太麻烦了,还是并查集简单一点
#include <iostream>
#include
<algorithm>
#define INF 100000000
using namespace std;

struct Node
{
int cost;
int st;
int ed;
}node[
1005];
int set[205];

int cmp(Node a, Node b)
{
return a.cost < b.cost;
}

int find (int x)
{
int t = x;
while (set[x] != x)
{
x
= set[x];
}
set[t] = x;
return x;
}

int main ()
{
int n, m, i, j, k, p, q, x, y, xx, yy, min;
while (scanf("%d %d", &n, &m) != EOF)
{
for (i = 0; i < m; i ++)
{
scanf(
"%d %d %d", &node[i].st, &node[i].ed, &node[i].cost);
}
sort(node, node
+ m, cmp);
scanf(
"%d", &q);
while (q --)
{
scanf(
"%d %d", &x, &y);
min
= INF;
for (i = m-1; i >= 0;i --)
{
for (k = 1;k <= n; k ++)
{
set[k] = k;
}
j
= i;
while (j >= 0)
{
xx
= find(node[j].st);
yy
= find(node[j].ed);
if (xx != yy)
{
set[xx] = set[yy];
}
if (find(x) == find(y))
{
break;
}
j
--;
}
if (j < 0)
{
break;
}
if (min > node[i].cost - node[j].cost)
{
min
= node[i].cost - node[j].cost;
}
}
if (min == INF)
{
min
= -1;
}
printf (
"%d\n", min);
}
}
return 0;
}

posted on 2011-03-31 18:48  ╰☆惔、煙菋  阅读(515)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3