Problem : 暴力摩托

原文
Time Limit: 1 Sec Memory Limit: 128 MB

Description

N个站,之间连了M条双向的通路!但每条路都规定了一个速度的限制值,在这条路上必须以这个速度前进!所以在
前进的时候要调整速度,现决定尽量使调整的幅度小一些,也就是使走过的路的速度最大值与最小值之差最小!

Input

第一行有2个正整数N , M , 分别表示站点数,路径数.
接下来M行,每行有3个正整数 X, Y, V表示X, Y之间有一条路,其Speed值是V。
再接下来是数K, 表示任务数,
下面K行,每行有一对正整数P,Q ,表示一个任务从P到Q.
(1<=n<=200, 1<=m<=1000, 1<=K<=10)

Output

对于每一个任务输出一行,仅一个数,即最大速度与最小速度之差。

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
HINT
相信有很多人和吴伊茗一样,在看到这道题的时候最先想到的就是树或是dfs,但再看看数据范围,能不能过自己心里也没底,最后看看标签 “并查集” ,顿时摸不着头脑,接着就放弃了。
其实,这题也没有这么难,我们可以用并查集来优化。
由于要使两者差最小,则必须使最大值尽可能的小,使最小值尽可能的大。
步骤:
1、我们先按每一条边的值从小到大排序(至于为什么,后面会讲到)
2、接着,我们可以枚举最最小权值的边,在以这条边为起点,去搜索能使x和y两点相连的路线(这里需要运用并查集,若两者的根相同,则可以相连),找到一条能使x和y相连的最大权值的边,就跳出循环(由于之前已经排好序,所以在它后面的,肯定会比当前值大),继续枚举。
3、若能够相连,则以当前值的差与小差去作比较,取较小值。
4、一次打印一个即可。

code:

#include<bits/stdc++.h>
using namespace std;
int f[201],x,y,n,m;
struct dd {int x,y,z;//x、y为这条边的两个结点,z为权值
} v[1001];
bool cmp(dd a,dd b) {return a.z<b.z;
}
int find(int i) {if(f[i]==i) return i;return f[i]=find(f[i]);//并查集,扁平化使时间缩短
}
void work() {int i,j,ans=INT_MAX;for(i=1; i<=m; i++) {//枚举最小值for(j=1; j<=n; j++) f[j]=j;//初始化for(j=i; j<=m; j++) {//枚举最大值,保证最大值比最小值大if(find(v[j].x)!=find(v[j].y))//若当前边还未相连,则把两点相连f[find(v[j].x)]=find(v[j].y);if(find(x)==find(y))//若找到路线,则退出循环break;}if(f[x]==f[y])//若以当前值为最小值,且x与y能够相连,则去作比较ans=min(ans,v[j].z-v[i].z);//最大值减去最小值}printf("%d\n",ans);
}
int main() {int i,j,k;scanf("%d%d",&n,&m);for(i=1; i<=m; i++) scanf("%d%d%d",&v[i].x,&v[i].y,&v[i].z);sort(v+1,v+m+1,cmp);//排序scanf("%d",&k);for(i=1; i<=k; i++) {scanf("%d%d",&x,&y);work();}
}

Problem : 暴力摩托相关推荐

  1. Win10特别版《暴力摩托》的真人剧情AVI路子太野了~

    下载地址 https://www.v2fy.com/p/kr-000101/ 暴力摩托是Win98时代的经典游戏,游戏制作精良,制作方为了提升玩家代入感,拍摄了大量的真人过场AVI视频- 暴力摩托六种 ...

  2. 【u238】暴力摩托

    Time Limit: 1 second Memory Limit: 64 MB [问题描述] 晚会上大家在玩一款"暴力摩托"的游戏,它拥有非常逼真的画面和音响效果! 当然了,车子 ...

  3. 【动态规划】暴力摩托

    1.            暴力摩托 (car.pas/c/cpp) [问题描述] 晚会上大家在玩一款"暴力摩托"的游戏,它拥有非常逼真的画面和音箱效果! 当然了,车子总是要加油的 ...

  4. 暴力摩托如何联机玩?

    相信,很多人都是从暴力摩托过来的人. 但是,有多少人知道其实暴力摩托也可以联机玩? 选择网络模式 将自己的机器作为主机 选择游戏级别 选择是否启用小汽车 选择TCP/IP 这个你懂得 选择一个人物 等 ...

  5. 暴力摩托(NDK1045)

    暴力摩托 Time Limit:1000MS  Memory Limit:65536K Total Submit:18 Accepted:11 Description 晚会上大家在玩一款"暴 ...

  6. cogs 1114. [郑州培训2012] 暴力摩托

    ★★☆   输入文件:motor.in   输出文件:motor.out   简单对比 时间限制:1 s   内存限制:128 MB MOTOR 题目描述 Fish最喜欢玩暴力摩托,一个通宵之后,总算 ...

  7. [郑州培训2012] 暴力摩托-并查集

    如有错误,请留言提醒,不要坑到小朋友 Description 华英雄最喜欢玩暴力摩托,一个通宵之后,总算过了全关!正当他为自己的成绩洋洋得意的时候却发现居然还有一个特别的附加关!华英雄虽然累得眼睛都睁 ...

  8. Windows7游戏花屏通用补丁1.2,解决暴力摩托等花屏不能玩的游戏

    1.2 更新说明 解决了退出游戏后,桌面图标被重新布局的bug. 压缩包里的DeskSave.exe是用来保存和恢复桌面图标布局用的工具,有需要的朋友也可以单独拿出来用 使用说明: 将压缩包里的文件解 ...

  9. 解决暴力摩托等在win7不能玩的问题,Windows7游戏花屏通用补丁 1.2

    Win7游戏花屏通用补丁本补丁是一些Xp下的游戏在Windows7下花屏的通用解决办法,将此Win7游戏花屏通用补丁拷贝到游戏目录下运行即可解决. 将压缩包里的文件解压到游戏目录下,执行win7Fix ...

最新文章

  1. matlab生产正弦mif文件
  2. Java单向链表操作详解
  3. pandas删除满足条件的行_入门Pandas练习
  4. linux系统编程:IO读写过程的原子性操作实验
  5. 消息队列-Message Queue
  6. EV: repl.it - A Wonderful JavaScript Console
  7. Zmail-简单易用的python邮件模块
  8. ajax请求后台php数据时查看报错parse error
  9. adb server is out of date killing
  10. python趋势跟踪_一个趋势跟踪系统—Dual Thrust策略(期货)
  11. 「音视频直播技术」Android下H264解码
  12. HTML网页实训的目的,网页设计实习目的及意义
  13. 易优CMS插件易优CMS智能改写插件
  14. ABP框架Web API跨域问题的解决方案
  15. 萌新的C语言指针小结(1)
  16. js中onsubmit用法
  17. 推荐几本小说吧,反正过年闲着也是闲着,看看呗
  18. 文正机械电子工程专业课_机械电子工程有些什么课程
  19. 基于Windows8与Visual Studio11开发第一个USB驱动应用程序
  20. Unable to connect to Redis无法连接到Redis

热门文章

  1. c++2013无法卸载_提示本机已安装过excel服务器,请先卸载再重新安装。但又找不到卸载的地方...
  2. 0x00310030指令引用的0x00310030内存。该内存不能为written
  3. [转载]《越狱》第二季过后,剧情跌宕起伏,各角色们的命运也各有不同,现公布如下
  4. 严格m叉树(正则m叉树)
  5. 在线less生成css,LESS 转 CSS
  6. 打砖块小游戏php程序,javascript实现打砖块小游戏(附完整源码)
  7. Android Studio显示“Hardcoded String XXX,should use @string resource”的解决方法2-2
  8. 平板电脑与计算机连接网络,平板电脑怎么连接网络 平板连接wifi上网方法【详解】...
  9. 英文投稿系统上传文件失败怎么办?
  10. 了解IT专业,选对IT专业