三个最小生成树题

[bzoj1050] 旅行

Description

给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000)。给你两个顶点S和T,求

一条路径,使得路径上最大边和最小边的比值最小。如果S和T之间没有路径,输出”IMPOSSIBLE”,否则输出这个

比值,如果需要,表示成一个既约分数。 备注: 两个顶点之间可能有多条路径。

Input

第一行包含两个正整数,N和M。下来的M行每行包含三个正整数:x,y和v。表示景点x到景点y之间有一条双向公路

,车辆必须以速度v在该公路上行驶。最后一行包含两个正整数s,t,表示想知道从景点s到景点t最大最小速度比

最小的路径。s和t不可能相同。

1<N<=500,1<=x,y<=N,0<v<30000,0<M<=5000

Output

如果景点s到景点t没有路径,输出“IMPOSSIBLE”。否则输出一个数,表示最小的速度比。

如果需要,输出一个既约分数。

Sample Input

【样例输入1】
4 2
1 2 1
3 4 2
1 4
【样例输入2】
3 3
1 2 10
1 2 5
2 3 8
1 3
【样例输入3】
3 2
1 2 2
2 3 4
1 3

Sample Output

【样例输出1】
IMPOSSIBLE
【样例输出2】
5/4
【样例输出3】
2

[codevs1001] 舒适的路线

题目描述 Description

Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光。
Z小镇附近共有
N(1<N≤500)个景点(编号为1,2,3,…,N),这些景点被M(0<M≤5000)条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路。也许是为了保护该地的旅游资源,Z小镇有个奇怪的规定,就是对于一条给定的公路Ri,任何在该公路上行驶的车辆速度必须为Vi。频繁的改变速度使得游客们很不舒服,因此大家从一个景点前往另一个景点的时候,都希望选择行使过程中最大速度和最小速度的比尽可能小的路线,也就是所谓最舒适的路线。

输入描述 Input Description

第一行包含两个正整数,N和M。
接下来的M行每行包含三个正整数:x,y和v(1≤x,y≤N,0 最后一行包含两个正整数s,t,表示想知道从景点s到景点t最大最小速度比最小的路径。s和t不可能相同。

输出描述 Output Description

如果景点s到景点t没有路径,输出“IMPOSSIBLE”。否则输出一个数,表示最小的速度比。如果需要,输出一个既约分数。

样例输入 Sample Input

样例1
4 2
1 2 1
3 4 2
1 4

样例2
3 3
1 2 10
1 2 5
2 3 8
1 3

样例3
3 2
1 2 2
2 3 4
1 3

样例输出 Sample Output

样例1
IMPOSSIBLE

样例2
5/4

样例3
2

数据范围及提示 Data Size & Hint

N(1<N≤500)

M(0<M≤5000)

Vi在int范围内

[fjwc2014]生成树

Description

给定一个无向图,要求图中一个生成树,这个生成树中的最大边和最小边相差最小,输出这个差值

Input

每组测试数据一组样例

每组样例首先输入两个整数n, m (3 ≤ n ≤ 300, 0 < m ≤ n*(n-1)/2),表示该组样例中点和边的个数,之后每行三个整数x, y, s (0 ≤ x ≤ n-1, 0 ≤ y ≤ n-1, 1 ≤ s ≤ 10000),表示编号为x和编号为y的点之间有一条长度为s的边相连,保证给定的图联通,任意两点之间只有一条边相连

Output

对于每组样例,首先输出样例编号,之后输出最小差值,具体格式见sample output

Sample Input

3 3

0 1 220

1 2 120

2 0 160

4 5

2 3 80

1 3 80

0 1 180

2 1 200

3 0 140

Sample Output

40

60

题解

时间: 2024-08-30 06:41:00

三个最小生成树题的相关文章

三个 编程题 :1. 回文 2. 将字符串t连接到字符串s的尾部

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

【Linux探索之旅】第三部分测验题

内容简介 1.第三部分测验题 2.第四部分第一课:压缩文件,解压无压力 第三部分测验题 wc命令做不到以下哪一项? A. 统计单词数 B. 统计行数 C. 为文件内容排序 用grep命令搜索文本,何时需要用双引号包裹搜索的关键字? A. 关键字超过10个字符 B. 关键字是正则表达式 C. 关键字包含空格 重定向符号>>,在文件不存在时,会创建文件吗? A. 会 B. 不会 2>&1表示什么? A. 使标准错误输出与标准输出重定向到同一个地方 B. 将标准错误输出重定向到文件 C

浅谈图论(三)——最小生成树

写在前面:今天突然发现还没有写过最小生成树的博客,然后调堆优化prim板子好久才调出来--赶紧写篇博客来保命. 一.最小生成树概念: 在一个n个点的有向图中,选取n-1条边使所有顶点两两联通,那么这个边集叫做这个图的一个生成树 在所有的生成树中,边权和最小的那一个叫做图的最小生成树. 二.Kruskal算法 求图的最小生成树的常用方法有两种,Kruskal和Prim kruskal算法的步骤如下: (1)将所有边按边权从小到大排序 (2)选取一条边权最小且两顶点未联通的边并把它连上 (3)重复步

OCAC暑期比赛第三场 E题 线上的点 题解

线上的点原题链接:http://codeforces.com/problemset/problem/251/A[题目描述]一条直线上有 n 个点,他们的坐标分别是 x1,x2,……,xn.没有两个点的坐标相同.你可以从这些点中挑选出三个点,使得三个点的最大距离不超过 d .请求出满足条件的三个点的方案数.[输入格式]输入的第一行包含两个整数 n 和 d (1<=n<=10^5; 1<=d<=10^9).接下来的一行包含 n 个整数 x1,x2,……,xn,分别表示 n 个点的坐标,

OCAC暑期比赛第三场 G题 汉堡汪 题解

汉堡汪原题链接:http://codeforces.com/problemset/problem/371/C[题目描述]汪老师准备做汉堡给你吃.但是汪老师只会做一种类型的汉堡,汪老师把他叫做一码汉堡.一码汉堡的组成很简单,它只由面包片(用'B'表示).香肠(用'S'表示).起司(用'C'表示)组成.汪老师有一张食谱,是一个字符串,里面标记了一码汉堡的组成.比如,如果食谱是“BBBSSC”的话,那就是说,这个汉堡是:先叠三块面包片,然后再叠两根香肠,最后再叠一片起司.这样这个汉堡就制作完成了.汪老

移动web开发中自己遇到的三个小题及解决方法

大家好! 这是我第二次写随笔感想,有不足之处希望大家提出,我也算的上一个小白,自己进入前端行业也刚刚半年,在这里半年里我遇到一个技术大牛的好领导,让我在项目中学到很多,想和大家分享一下! 一. 移动端禁止选中内容 如果你不想用户可以选中页面中的内容,那么你可以在css中禁掉: .user-select-none { -webkit-user-select: none;  /* Chrome all / Safari all */ -moz-user-select: none;     /* Fi

专题三 第十一题

1.题目编号:1001 2.简单题意:给一个序列a[1],a[2]...a[n],计算该序列的最长子序列的最大值,但是如果有超过一个子序列的,选择第一个子序列. 3.解题思路形成过程:看到这个题,就是用动态规划求最大子序列,开始用的方法一直超时,嵩哥说我写的太麻烦,应该用老师上课讲的,输入的n个数相加放在一个sum数组里面,如果sum[i-1]+a[i]的值为负的就将sum[i]=a[i],否则与a[i]相加之后放入sum[i]中,另外这个题需要记录字段的开始位置和结束位置,可以用个tag数组将

JSP前三章错题整理

A: B: C: D:  web-inf目录中的文件不能被客户端直接访问. 正确答案是 C 您回答的是 D 回答错误 试题分析纠错设为收藏 (选择一项) 14 A: B: C: Tomcat作为Web服务器,可以部署Web站点以提供对浏览器访问的支持,不可以部署C/S程序 D: 正确答案是 C 您回答的是 D 回答错误 试题分析纠错设为收藏 (选择一项) 15 A: B: C: D: d答案错误,因为通过import导包的时候,不同的类文件之间用逗号隔开,应该为:<%@page import=&qu

基于快速排序思想的三个算法题

一,最小的k个数 输入n个数,找出其中最小的k个数,例如输入4,5,1,6,2,7,3,8,个数字,则最小的数字是1,2,3,4 基于O(n)的算法,可以用基于Partion函数解决这个问题,如果基于数组的第k个数字来调整,使得比第k个数字小的所有数字都位于数组的左边,比第k个数组大的所有数字都位于数组的右边,这样调整之后数组左边的k个数字就是最小的k个数字,不一定有序 import java.util.Scanner; public class Main { public static voi