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

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

本题属于比较简单的最短路问题

注:若无向图出现相同边但权值不同要特别判断

#include
#include
#define inf 1e8 + 10bool vis[1005];int dis[1005],w[1005];int a[1005][1005],b[1005][1005];int n,m;void Dijkstra(int s,int t){ memset(vis,false,sizeof(vis)); for(int i=1; i<=n; i++) { dis[i] = a[s][i]; w[i] = b[s][i]; } vis[s] = true; for(int i=1; i<=n; i++) { int r,q = inf; for(int j=1; j<=n; j++ ) { if(!vis[j]&&dis[j]
dis[r]+a[r][j]) { dis[j] = dis[r] + a[r][j] ; w[j] = w[r] + b[r][j] ; } if(dis[j]==dis[r]+a[r][j]) { if(w[j]>w[r] + b[r][j]) { w[j] = w[r] + b[r][j]; } } } } printf("%d %d\n",dis[t],w[t]);}int main(){ int x,y,d,p,s,t; while(scanf("%d%d",&n,&m),n+m) { memset(a,126,sizeof(a)); memset(b,126,sizeof(b)); for(int i=0; i
d)//判断出现相同边路费不同不同 { a[x][y]=a[y][x]=d; b[x][y]=b[y][x]=p; } else if(a[x][y]==d) { if(b[x][y]>p) b[x][y]=b[y][x]=p; } } scanf("%d%d",&s,&t); Dijkstra(s,t); }}

转载地址:http://kysgi.baihongyu.com/

你可能感兴趣的文章
SQL Server Management Studio 2016 (SSMS)
查看>>
EF中Sum()异常:到值类型“System.Decimal”的强制转换失败,因为具体化值为 null。
查看>>
Visual Studio Code插件之Atom One Dark Syntax Theme
查看>>
EntiryFramework中事务操作(二)TransactionScope
查看>>
EF获取非跟踪数据之DBSet.AsNoTracking()
查看>>
关于EF6.0整理
查看>>
C# using 关键字使用整理
查看>>
EF日期格式筛选_EF常用日期筛选逻辑整理
查看>>
EF日期筛选异常:SqlServer.DATEDIFF”函数的 DATEPART 参数必须是文字字符串。
查看>>
C# 托管资源 与 非托管资源
查看>>
C#析构函数
查看>>
C#IDisposable 接口&资源释放
查看>>
cssnext简介
查看>>
PostCss简介
查看>>
比较全的前端整理
查看>>
C# lock关键词/lock语句块、线程锁
查看>>
EF TransactionScope异常:分布式事务已完成。请将此会话登记到新事务或 NULL 事务中。
查看>>
EF 多线程TransactionScope事务异常"事务(进程 ID 58)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。"
查看>>
TransactionScope线程安全问题整理
查看>>
关于EF上线文异常问题整理
查看>>