双调路径
bic
.pas/c/cpp
时间限制: 3S
100
分
【
问题描述
】
如今的道路收费发展很快。道路的密度越来越大,因此选择最佳路径是很现实的问题。城市的道路是双向的。每条道路有固定的旅行时间以及需要支付的费用。
路径是连续经过的道路组成的。总时间是各条道路旅行时间的和,总费用是各条道路所支付费用的总和。一条路径越快,或者费用越低,该路径就越好。严格地说,如果一条路径比别的路径更快,而且不需要支付更多费用,它就比较好。反过来也如此理解。如果没有一条路径比某路径更好,则该路径被称为最小路径。
这样的最小的路径有可能不止一条,或者根本不存在路径。
例子
下图给出了一个网络,每条路有两个参数:费用和时间。
从1到4有4条路径。1‑2‑4 (fee 4, time 5), 1‑3‑4 (fee 4,
time 5), 1‑2‑3‑4 (fee 6, time 4),1‑3‑2‑4 (fee 4,
time 10)。
1‑3‑4
和 1‑2‑4比 1‑3‑2‑4更好。有两种最佳路径:fee 4, time 5 (roots 1‑2‑4 and 1‑3‑4) 和 fee 6, time 4 (root 1‑2‑3‑4)。
问 题
:
从文件bic.in中读入网络,计算最小路径的总数。费用时间都相同的两条最小路径只算作一条。你只要输出不同种类的最小路径数即可。
【
输入文件
】
:
文件的第一行有4个整数,城市总数n, 1
£
n
£
100,
道路总数 m, 0
£
m
£
300,
起点和终点城市s,e, 1
£
s, e
£
n, s
¹
e
。接下来的m行每行描述了一条道路的信息,包括4个整数,两个端点p,r,费用c,以及时间t,1
£
p, r
£
n, p
¹
r, 0
£
c
£
100, 0
£
t
£
100
。
两个城市之间可能有多条路径连接。
【
输出文件
】
:
仅一个数,表示最小路径的总数。
【
样 例
】
Bic.in
|
bic.out
|
Comments
|
4 5 1
4
2 1 2 1
3 4 3 1
2 3 1 2
3 1 1 4
2 4 2 4
|
2
|
该例对应前面的图。
|
posted on 2009-03-11 14:11
250 阅读(705)
评论(0) 编辑 收藏 引用