OJ_1008 最短路径问题
来源:互联网 发布:ubuntu忘记登录密码 编辑:程序博客网 时间:2024/06/06 09:42
#include <iostream>using namespace std;const int N=1001;const int INF=100000000;typedef struct{ int len,cost;}map;map ma[N][N]; map temp[N];void init(int n){ for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { ma[i][j].len=INF; ma[j][i].len=INF; } }}void dijkstra(int s,int t,int n){ int visit[n+1]; for(int i=1;i<=n;i++) { visit[i]=0; temp[i]=ma[s][i]; } temp[s].len=0; temp[s].cost=0; visit[s]=1; int min,k; for(int i=2;i<=n;i++) { min=INF; k=-1; for(int j=1;j<=n;j++) { if(temp[j].len<min&&visit[j]==0) { min=temp[j].len; k=j; } } visit[k]=1; for(int j=1;j<=n;j++) { int minlen=temp[k].len+ma[k][j].len; int mincost=temp[k].cost+ma[k][j].cost; if(visit[j]==0&&minlen<temp[j].len) { temp[j].len=minlen; temp[j].cost=mincost; }else if(visit[j]==0&&minlen==temp[j].len) { temp[j].len=minlen; temp[j].cost=mincost; } } } }void func(){ int n,m; while(cin>>n>>m) { if(n==0&&m==0)break; init(n); for(int i=1;i<=m;i++) { int a,b,d,p; cin>>a>>b>>d>>p; ma[a][b].len=d; ma[a][b].cost=p; } int s,t; cin>>s>>t; dijkstra(s,t,n); cout<<temp[t].len<<" "<<temp[t].cost<<endl; }}int main(int argc, char *argv[]){ //printf("Hello, world\n");func();return 0;}
无向图求单源最短路径
dijkstra
不考虑“最短路径多条时选择花费最小”的条件也能AC,当前代码稍微改后,未经该条件用例验证…………
- 题目描述:
- 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。
- 输入:
- 输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点t。n和m为0时输入结束。
(1<n<=1000, 0<m<100000, s != t)
- 输出:
- 输出 一行有两个数, 最短距离及其花费。
- 样例输入:
3 21 2 5 62 3 4 51 30 0
- 样例输出:
9 11
0 0
- OJ_1008 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- OJ_1007
- HDU1253_胜利大逃亡(BFS裸三维)
- 关于myeclipse 8.5下android开发R.java文件不生成或不更新问题的解决
- 两个栈实现一个队列与两个队列实现一个栈
- 本来想多写点东西.可写的时候才发现自己什么也不熟特别是oracle要多练习
- OJ_1008 最短路径问题
- C++中L和_T()之区别
- tar 解压缩命令
- 使用开源imageLoader优化listview加载大量本地图片的demo
- projecteuler No.205 Dice Game
- note : DuiDesigner 添加的 WebBrowser 网页被打开后不能控制网页行为
- poj 3620 深搜
- C++映射操作符
- poj2386 深搜 连通块问题