sdutoj 3363 数据结构实验之图论七:驴友计划 (暴力深搜最短路)
2016-05-13 19:34
471 查看
题目链接:点击打开链接
题目大意:
做为一个资深驴友,小新有一张珍藏的自驾游线路图,图上详细的标注了全国各个城市之间的高速公路距离和公路收费情况,现在请你编写一个程序,找出一条出发地到目的地之间的最短路径,如果有多条路径最短,则输出过路费最少的一条路径。
连续T组数据输入,每组输入数据的第一行给出四个正整数N,M,s,d,其中N(2 <= N <= 500)是城市数目,城市编号从0~N-1,M是城市间高速公路的条数,s是出发地的城市编号,d是目的地的城市编号;随后M行,每行给出一条高速公路的信息,表示城市1、城市2、高速公路长度、收费额,中间以空格间隔,数字均为整数且不超过500,输入数据均保证有解。
在同一行中输出路径长度和收费总额,数据间用空格间隔。
代码:
题目大意:
做为一个资深驴友,小新有一张珍藏的自驾游线路图,图上详细的标注了全国各个城市之间的高速公路距离和公路收费情况,现在请你编写一个程序,找出一条出发地到目的地之间的最短路径,如果有多条路径最短,则输出过路费最少的一条路径。
输入
连续T组数据输入,每组输入数据的第一行给出四个正整数N,M,s,d,其中N(2 <= N <= 500)是城市数目,城市编号从0~N-1,M是城市间高速公路的条数,s是出发地的城市编号,d是目的地的城市编号;随后M行,每行给出一条高速公路的信息,表示城市1、城市2、高速公路长度、收费额,中间以空格间隔,数字均为整数且不超过500,输入数据均保证有解。
输出
在同一行中输出路径长度和收费总额,数据间用空格间隔。代码:
///数据结构实验之图论七:驴友计划 ///思路:用深搜求最短路+最小花费 #include <iostream> #include<cstdio> #include<cstdlib> #include<cstring> #define inf 0x3f3f3f3f using namespace std; struct node { int a,b; } q[501]; int mn[501][501]; int pq[501][501]; int vis[501]; int mp[501][501]; int sum,num; int ans,ant; int n; void f(int s,int d) { /*sum+=q[s].l; num+=q[s].p;*/ if(s==d) { if(sum<ans) { ans=sum; ant=num; } else if(sum==ans) { if(num<ant) { ant=num; } } sum=0;num=0; return ; } for(int i=0; i<n; i++) { if(mp[s][i]==1&&vis[i]==0) { sum+=mn[s][i]; num+=pq[s][i]; vis[i]=1; f(i,d); vis[i]=0; } } } int main() { int m,s,d; int t; cin>>t; while(t--) { memset(mp,0,sizeof(mp)); cin>>n>>m>>s>>d; int l,p; for(int i=0; i<m; i++) { cin>>q[i].a>>q[i].b>>l>>p; mp[q[i].a][q[i].b]=1; mp[q[i].b][q[i].a]=1; mn[q[i].a][q[i].b]=l; mn[q[i].b][q[i].a]=l; pq[q[i].a][q[i].b]=p; pq[q[i].b][q[i].a]=p; } ans=inf; ant=inf; memset(vis,0,sizeof(vis)); sum=num=0; vis[s]=1; f(s,d); printf("%d %d\n",ans,ant); } return 0; }
相关文章推荐
- sdutoj 3363 数据结构实验之图论七:驴友计划
- erlang 常用数据结构
- 数据结构域算法基础 一
- 【数据结构】两个队列实现一个栈
- 数据结构-前序遍历、中序遍历、后序遍历、层级遍历(递归、非递归)
- 数据结构和算法 – 4.字符串、 String 类和 StringBuilder 类
- 【数据结构】位图BitMap、布隆过滤器的算法实现
- 数据结构与算法——B树的C++实现
- 浅谈关于递归的一些感悟
- 数据结构总结
- 数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 数据结构笔记
- 关于多线程、安装信号、长跳转、数据结构等的例子
- 【线段树】浅谈区间问题(2)
- 共同学习Java源代码--数据结构--ArrayList类(一)
- sdutoj 3362 数据结构实验之图论六:村村通公路(最小生成树(裸的))
- 数据结构实验之二叉树五:层序遍历
- sdutoj 3361 数据结构实验之图论四:迷宫探索(dfs)
- 数据结构--深入数组
- 数据结构与算法练习-回溯、递归