PAT 旅游规划

旅游规划

有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。

考察dijkstra算法   要注意的是  当权重相等时 要更新下费用

AC代码

 1 #include <stdio.h>
 2 #define MAX 100000
 3 typedef struct
 4 {
 5     int weight;
 6     int cost;
 7 }graph;
 8 int N,M,S,D;
 9 graph g[500][500];
10 int dis[500];
11 int cost[500];
12 int flag[500];
13 void Dijkstra(int v)
14 {
15     int min,i,j,pos;
16
17     for(i=0;i<N;i++)
18     {
19         if(g[v][i].weight>0 )
20         {
21             dis[i]=g[v][i].weight;
22             cost[i]=g[v][i].cost;
23         }
24     }
25     flag[v]=1;
26     for(i=0;i<N;i++)
27     {
28         min=MAX;
29         pos=v;
30         for(j=i;j<N;j++)
31         {
32             if(flag[j]!=1 &&dis[j]<min &&dis[j]>0)
33             {
34                 min=dis[j];
35                 pos=j;
36             }
37         }
38         flag[pos]=1;
39
40         for(j=0;j<N;j++)
41         {
42             if(flag[j]!=1&&dis[pos]+g[pos][j].weight<dis[j] &&g[pos][j].weight>0&&dis[j]>0)
43             {
44                 dis[j]=dis[pos]+g[pos][j].weight;
45                 cost[j]=cost[pos]+g[pos][j].cost;
46             }
47             else if(dis[pos]+g[pos][j].weight==dis[j] &&cost[j]>cost[pos]+g[pos][j].cost)
48             {
49                 cost[j]=cost[pos]+g[pos][j].cost;
50             }
51         }
52     }
53     printf("%d %d\n",dis[D],cost[D]);
54 }
55 main()
56 {
57     int a,b,l,c;
58     int i,j;
59     scanf("%d%d%d%d",&N,&M,&S,&D);
60     for(i=0;i<M;i++)
61     {
62         scanf("%d%d%d%d",&a,&b,&l,&c);
63         g[a][b].weight=g[b][a].weight=l;
64         g[a][b].cost=g[b][a].cost=c;
65     }
66     Dijkstra(S);
67 }
时间: 2024-11-11 02:09:27

PAT 旅游规划的相关文章

07-图6 旅游规划

题目: 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便宜的一条路径. 输入格式: 输入说明:输入数据的第1行给出4个正整数N.M.S.D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N?1):M是高速公路的条数:S是出发地的城市编号:D是目的地的城市编号.随后的M行中,每行给出一条高速公路的信息,分别是:城市1.城市2.高速

PTA 旅游规划(25 分)

7-10 旅游规划(25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便宜的一条路径. 输入格式: 输入说明:输入数据的第1行给出4个正整数N.M.S.D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N?1):M是高速公路的条数:S是出发地的城市编号:D是目的地的城市编号.随后的M行中,每行给出一条高速公路的信息,分别

一本通1581旅游规划

1581:旅游规划 时间限制: 1000 ms         内存限制: 524288 KB 描述W市的交通规划出现了重大问题,市政府下决心在全市的各大交通路口安排交通疏导员来疏导密集的车流.但由于人员不足,W市市长决定只在最需要安排人员的路口安放人员.具体说来,W市的交通网络十分简单,它包括n个交叉路口和n-1条街道,任意一条街道连接两个交叉路口,并且任意两个交叉路口之间都存在一条路径互相连接.经过长期调查结果显示如果一个交叉路口位于W市交通网的最长路径上,那么这个路口必然拥挤不堪,所谓最长

如何做好农业观光旅游规划和农业休闲旅游开发?

熊大寻旅游规划公司/文 农业旅游是一种新型农业生产经营形式 ,也是一种新型旅游活动项目 ,是在发展农业生产的基础上有机地附加了生态旅游观光功能的交叉性产业 ,是当今旅游新需求的必然产物.农业生态旅游是把农业.生态和旅游业结合起来,利用田园景观.农业生产活动.农村生态环境和农业生态经营模式,吸引游客前来观赏.品尝.作习.体验.健身.科学考察.环保教育.度假.购物的一种新型的旅游开发类型.生态农业旅游是近几年才兴起的一种新型的旅游方式,人们多居住在城市里面,对于农村的概念越来越模糊.所以根据人们返璞

PAT 07-图6 旅游规划 (25分)

有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便宜的一条路径. 输入格式: 输入说明:输入数据的第1行给出4个正整数NN.MM.SS.DD,其中NN(2\le N\le 5002≤N≤500)是城市的个数,顺便假设城市的编号为0~(N-1N−1):MM是高速公路的条数:SS是出发地的城市编号:DD是目的地的城市编号.随后的MM行中,每行给出一条高

vijos 1476 旅游规划(csapc)

描述 W市的交通规划出现了重大问题,市政府下决心在全市的各大交通路口安排交通疏导员来疏导密集的车流.但由于人员不足,W市市长决定只在最需要安排人员的路口安放人员.具体说来,W市的交通网络十分简单,它包括n个交叉路口和n-1条街道,任意一条街道连接两个交叉路口,并且任意两个交叉路口之间都存在一条路径互相连接.经过长期调查结果显示如果一个交叉路口位于W市交通网的最长路径上,那么这个路口必然拥挤不堪,所谓最长路径定义为某条路径p=(v1,v2,v3-vk),路径经过的路口各不相同且城市中不存在长度>k

旅游规划

试题描述 W 市的交通规划出现了重大问题,市政府下定决心在全市各大交通路口安排疏导员来疏导密集的车流.但由于人员不足,W 市市长决定只在最需要安排人员的路口安排人员.具体来说,W 市的交通网络十分简单,由 n 个交叉路口和 n−1 条街道构成,交叉路口路口编号依次为 0,1,?,n−1 .任意一条街道连接两个交叉路口,且任意两个交叉路口间都存在一条路径互相连接. 经过长期调查,结果显示,如果一个交叉路口位于 W 市交通网最长路径上,那么这个路口必定拥挤不堪.所谓最长路径,定义为某条路径 p=(v

07-图6 旅游规划 (25 分)

有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便宜的一条路径. 输入格式: 输入说明:输入数据的第1行给出4个正整数N.M.S.D,其中N(2)是城市的个数,顺便假设城市的编号为0~(N?1):M是高速公路的条数:S是出发地的城市编号:D是目的地的城市编号.随后的M行中,每行给出一条高速公路的信息,分别是:城市1.城市2.高速公路长度.收费额,中

07-图6 旅游规划 (25 分)

有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便宜的一条路径. 输入格式: 输入说明:输入数据的第1行给出4个正整数N.M.S.D,其中N(2)是城市的个数,顺便假设城市的编号为0~(N−1):M是高速公路的条数:S是出发地的城市编号:D是目的地的城市编号.随后的M行中,每行给出一条高速公路的信息,分别是:城市1.城市2.高速公路长度.收费额,中