乘车路线
来源:互联网 发布:边缘融合软件 破解 编辑:程序博客网 时间:2024/04/29 03:04
D.乘车路线(roads.exe 1s )
编号为1.. N的N座城镇用若干仅供单向行驶的道路相连,每条道路上均有两个参数:道路长度(length)和在该条道路上行驶的费用(cost)。BOB准备从城镇1出发到达城镇N,但他目前只有W的钱,为此,你需要帮助他寻找一条从城镇1到城镇N在他能支付的前提下的一条最短路线。
输入:
第一行为钱的数目W (0<=w<=1000)
第二行为城镇数目N(2<=N<=100)
第三行为为道路条数K(1<=K<=10000)
随后的K行每行为一条道路的信息,包含4个数值(S,D,L,T)其中S为源城镇,D为目标城镇,L为道路长度,T为所需支付费用。(1<=S,D<=N,1<=L<=100,0<=T<=100)
输出:
输出最短长度,若无解,则输出“NO”;
示例:
roads.in
5
6
7
1 2 2 3
2 4 3 3
3 4 2 4
1 3 4 1
4 6 2 1
3 5 2 0
5 4 3 2
roads.out
11
#include<cstdio>
int w,n,k;
int e[105][105],m[105][105],e1[105],m1[105],book[105];
int main()
{
// freopen("roads.in","r",stdin);
// freopen("roads.out","w",stdout);
scanf("%d%d%d",&w,&n,&k);
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
if (i==j) e[i][j]=0,m[i][j]=0;else
e[i][j]=999999999,m[i][j]=999999999;
for (int i=1;i<=k;i++)
{
int t1,t2,t3,t4;
scanf("%d%d%d%d",&t1,&t2,&t3,&t4);
e[t1][t2]=t3;
m[t1][t2]=t4;
}
for (int i=1;i<=n;i++)
e1[i]=e[1][i],m1[i]=m[1][i];
book[1]=1;
for (int k=2;k<=n;k++)
{
int min=999999999;
int u;
for (int i=2;i<=n;i++)
if (book[i]==0)
{
if (e1[i]<min)
{
min=e1[i];
u=i;
}
}
book[u]=1;
for (int i=1;i<=n;i++)
if (e[u][i]+e1[u]<e1[i])
{
if (m[u][i]+m1[u]<w)
{
e1[i]=e[u][i]+e1[u];
m1[i]=m[u][i]+m1[u];
}
}
}
if (e1[n]!=999999999) printf("%d\n",e1[n]);else
printf("NO\n");
return 0;
}
- 乘车路线
- 乘车路线查询
- 林华郭莉婚礼乘车路线!
- 乘车路线查询
- 【贵阳-独山】乘车路线
- 从学校出发乘车路线
- 最短乘车路线查询
- 乘车
- 乘车
- 乘车
- 问站A-站L最短乘车路线(SQL问题)
- 最优乘车
- 最优乘车
- 最优乘车
- 最优乘车
- 高速乘车
- 公路乘车
- 公路乘车
- sqlzoo练习答案--SUM and COUNT
- 毕设系列之Libx264实时视频流(YUV 420P转H264视频编码篇)
- MY_iOS_在项目构建时如何应用ccache
- 二维数组内存图解
- browser-sync 文件监听失败的解决方案
- 乘车路线
- spring 面试题
- 每日一点Js(三)
- NVIDIA Jetson TX2 进阶:Nsight Eclipse Edition
- X Chen笔记---Centos作为客户机时的桥接配置
- 从零开始学习laravel web(六)
- 为什么需要DTO层
- 使用Sigar包获取操作系统信息
- zookeeper原理(转)