博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3790 最短路径问题
阅读量:5157 次
发布时间:2019-06-13

本文共 1208 字,大约阅读时间需要 4 分钟。

结构体形式的Dijkstra

注意,费用和总路程都要处理,总路程为先!

#include"stdio.h"#include"string.h"#define INF 999999struct node{	int dis,cost;}map[1001][1001],f[1001];int n,m,s,e;int mark[1001];void dijkstra(){	int i,j,k,min;	memset(mark,0,sizeof(mark));	for(i=1;i<=n;i++)	{		f[i].dis=map[s][i].dis;		f[i].cost=map[s][i].cost;	}	mark[s]=0;f[s].cost=0;f[s].dis=0;	for(i=1;i<=n;i++)	{		min=INF;		for(j=1;j<=n;j++)		{			if(!mark[j]&&f[j].dis
f[k].dis+map[k][j].dis&&map[k][j].dis!=INF) { f[j].dis=f[k].dis+map[k][j].dis; f[j].cost=f[k].cost+map[k][j].cost; } else if(f[j].dis==f[k].dis+map[k][j].dis&&map[k][j].dis!=INF) { if(f[j].cost>f[k].cost+map[k][j].cost) f[j].cost=f[k].cost+map[k][j].cost; } } } }}int main(){ int i,j,a,b,d,p; while(scanf("%d%d",&n,&m)!=EOF,n+m) { for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(i==j) map[i][j].cost=map[i][j].dis=0; else map[i][j].cost=map[i][j].dis=INF; } } for(i=0;i
d) { map[a][b].dis=map[b][a].dis=d; map[a][b].cost=map[b][a].cost=p; } } scanf("%d%d",&s,&e); dijkstra(); printf("%d %d\n",f[e].dis,f[e].cost); } return 0;}

转载于:https://www.cnblogs.com/yyf573462811/archive/2012/07/25/6365387.html

你可能感兴趣的文章
二叉排序树
查看>>
Javascript学习历程之事件
查看>>
.NET Remoting 入门实例
查看>>
Git配置安装使用教程操作github上传克隆数据
查看>>
Django的路由层
查看>>
Python笔记——break的注意事项
查看>>
css hack的使用
查看>>
最小生成树,回忆复习篇。
查看>>
HTML 去调table表单里面td之间的间距
查看>>
实体框架(Entity Framework)简介
查看>>
自定义导航栏内容
查看>>
记录Yii2代码调试中出现的两个问题(截图展示)
查看>>
字符串常用操作
查看>>
fiddler模拟低速网络
查看>>
Grafana展示DNS解析延时
查看>>
如何在Android 4.0 ICS中禁用StatusBar | SystemBar | 状态栏 【完美版】
查看>>
查看tomcat启动文件都干点啥---server对象
查看>>
Javascript 运行上下文和作用域链
查看>>
小学生四则运算
查看>>
debian+apache+acme_tiny+lets-encrypt配置笔记
查看>>