博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最短路 Til the Cows Come Home POJ - 2387
阅读量:5241 次
发布时间:2019-06-14

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

最短路模板题,有一个坑,用dijkstra算法时两点之间可能有多条路,要存取最短的那条。

dijkstra:

#include
#include
#include
#include
#define inf 0x3f3f3fusing namespace std;int a[1005][1005];int dis[1005],vis[1005];int main(){ int n,t; scanf("%d%d",&t,&n); memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(i==j) a[i][j]=0; else a[i][j]=inf; } while(t--) { int x,y,c; scanf("%d%d%d",&x,&y,&c); a[x][y]=a[y][x]=min(a[x][y],c); } for(int i=1;i<=n;i++) dis[i]=a[1][i]; vis[1]=1; for(int i=1;i
dis[u]+a[u][k]) dis[k]=dis[u]+a[u][k]; } } printf("%d\n",dis[n]); return 0;}

Bellman-Ford:要考虑路是双向的

#include
#include
#include
#include
#define inf 0x3f3f3fusing namespace std;int u[2005],v[2005],c[2005];int dis[1005];int n,t;int main(){ scanf("%d%d",&t,&n); memset(dis,inf,sizeof(dis)); for(int i=1; i<=t; i++) scanf("%d%d%d",&u[i],&v[i],&c[i]); dis[1]=0; for(int i=1;i
dis[u[j]]+c[j]) dis[v[j]]=dis[u[j]]+c[j]; if(dis[u[j]]>dis[v[j]]+c[j]) dis[u[j]]=dis[v[j]]+c[j]; } printf("%d\n",dis[n]); return 0;}

 

转载于:https://www.cnblogs.com/Twsc/p/7238160.html

你可能感兴趣的文章
网易杭研后台技术中心的博客 -MYSQL :OOM
查看>>
第二章 数据通信的基础知识 计算机网络笔记 学堂在线 2.1 数据传输系统 2.2 信号...
查看>>
如何解决click事件的重复触发问题
查看>>
2016寒假自学笔记
查看>>
VC++2012编程演练数据结构《21》二叉排序树
查看>>
poj1417(种类并查集+dp)
查看>>
CCI_Q1.1
查看>>
JavaScript设计模式与开发实践pdf
查看>>
贝叶斯思维 统计建模的Python学习法pdf
查看>>
Visual FoxPro权威指南pdf
查看>>
HDU 2561 第二小整数
查看>>
Python攻克之路-字典
查看>>
Easyui NumberBox格式化展示
查看>>
转载:ASP.NET Core 在 JSON 文件中配置依赖注入
查看>>
(描述需要改进) Leetcode No.71 **
查看>>
【技巧】添加sublime-text到右键菜单,记录下来,免忘记
查看>>
socket初识
查看>>
绕啊绕的递归函数
查看>>
杭电2016 数据的交换输出
查看>>
vue+sass 下sass不能运行问题
查看>>