07-图6 旅游规划 (25分)
2017-05-30 19:49
260 查看
07-图6 旅游规划 (25分)有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。
输入格式:
输入说明:输入数据的第1行给出4个正整数NN、MM、SS、DD,其中NN(2\leN\le 5002≤N≤500)是城市的个数,顺便假设城市的编号为0~(N-1N−1);MM是高速公路的条数;SS是出发地的城市编号;DD是目的地的城市编号。随后的MM行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额,中间用空格分开,数字均为整数且不超过500。输入保证解的存在。输出格式:
在一行里输出路径的长度和收费总额,数字间以空格分隔,输出结尾不能有多余空格。输入样例:
4 5 0 3 0 1 1 20 1 3 2 30 0 3 4 10 0 2 2 20 2 3 1 20
输出样例:
3 40
这题在一个memset上面卡住了,在对两个数组初始化的时候用了memset结果一直出现一些莫名其妙的错误,后来用了最基础的初始化就好了。因为memset是对连续一段区间的处理,也找了些资料,并没有特别懂,但是感觉用在这个数组也不太合适。之后再去查查。直接给出代码。
#include<iostream>#include<cstdlib>#include<cstring>using namespace std;typedef struct graphnode *Graph;int s,d;struct graphnode{int Nv,Ne;int G[501][501];int P[501][501];};void Insert(Graph g,int x,int y,int w,int z){g->G[x][y]=w;g->G[y][x]=w;g->P[x][y]=z;g->P[y][x]=z;}Graph Create(){int m,n;cin>>n>>m>>s>>d;Graph g=(Graph)malloc(sizeof(struct graphnode));g->Nv=n;g->Ne=m;// memset(g->G,65535,sizeof(g->G));// memset(g->P,65535,sizeof(g->P));for(int i=0;i<n;i++){for(int j=0;j<n;j++){g->G[i][j]=65535;g->P[i][j]=65535;}}while(m--){int S,D,L,M;cin>>S>>D>>L>>M;Insert(g,S,D,L,M);}return g;}void Dijkstra(Graph g,int v0,int *D,int *PP){int flag[501],mm,i,j,k,mo;for(i=0;i<g->Nv;i++){flag[i]=0;D[i]=g->G[v0][i];PP[i]=g->P[v0][i];}D[v0]=0;flag[v0]=1;for(i=0;i<g->Nv;i++){mm=65535;for(j=0;j<g->Nv;j++){if(!flag[j])if(D[j]<mm){mm=D[j];mo=PP[j];k=j;}}if(mm<65535){flag[k]=1;}elsebreak;for(int p=0;p<g->Nv;p++){if(!flag[p]&&mm+g->G[k][p]<D[p]){D[p]=mm+g->G[k][p];PP[p]=mo+g->P[k][p];}elseif(!flag[p]&&mm+g->G[k][p]==D[p]&&mo+g->P[k][p]<PP[p]){PP[p]=mo+g->P[k][p];}}}}int main(){Graph g=Create();int c1[505],c2[505];Dijkstra(g,s,c1,c2);cout<<c1[d]<<" "<<c2[d]<<endl;return 0;}
相关文章推荐
- 07-图6 旅游规划 (25分)
- 07-图6 旅游规划 (25分)
- MOOC浙大数据结构 — 07-图6 旅游规划 (25分)
- 07-图6 旅游规划 (25分)
- 07-图6 旅游规划 (25分)
- PAT 07-图6 旅游规划 (25分)
- 07-图6 旅游规划 (25分)
- 07-图6 旅游规划 (25分)
- 07-图6 旅游规划 (25分)
- 07-图4 哈利·波特的考试 (25分)
- 07-图4 哈利·波特的考试 (25分)
- 5-2 旅游规划 (25分)
- pta 07-图4 哈利·波特的考试 (25分) floyd
- 07-图6 旅游规划
- PTA 数据结构与算法题目集(中文)5-9 旅游规划 (25分)
- 07-图6 旅游规划(25 分)
- 07-图4 哈利·波特的考试 (25分)
- pta 07-图4 哈利·波特的考试 (25分) floyd
- 5-9 旅游规划 (25分)
- 07-图4 哈利·波特的考试 (25分)