Dijkstra模板
来源:互联网 发布:三国之数据辅助 编辑:程序博客网 时间:2024/06/08 10:43
void Dijkstra(int st){ memset(conf,0,sizeof(conf)); conf[st]=1;//标记除起点外所有点的最短路都未确定 for(int i=1;i<=mc;i++) dis[i]=a[i][st]; dis[st]=0;//起点到起点为0 for(int i=1;i<=mc;i++){ int tempmin=INF; int aim=st; for(int j=0;j<=mc;j++)// 找出当前未确定的点j的dis[j]最小值 if(!conf[j]&&dis[j]<tempmin){ aim=j;//aim为当前邻接点中距离最小的点 tempmin=dis[j]; } conf[aim]=1; for(int j=1;j<=mc;j++){//松弛操作,通过新加入的点的路径找到离st点更短的路径 if(!conf[j]&&a[aim][j]!=INF&&dis[aim]+a[aim][j]<dis[j]) dis[j]=dis[aim]+a[aim][j]; } } return ;}
堆优化
void dijkstra(int st){ for(int i=0;i<MAXN;i++){ dis[i]=INF; vis[i]=0; } dis[st]=0; priority_queue <int> a; int e; a.push(0); int v; while(!a.empty()){ e=a.top(); a.pop(); vis[e]=0; for(int i=0;i<edge[e].size();i++){ v=edge[e][i].v; if(dis[v]==INF||dis[v]>dis[e]+edge[e][i].w){ dis[v]=dis[e]+edge[e][i].w; if(!vis[v]){ vis[v]=1; a.push(v); } } } }}
0 0
- dijkstra 模板
- dijkstra 模板
- Dijkstra模板
- dijkstra模板
- dijkstra模板
- Dijkstra模板
- (Dijkstra模板)
- Dijkstra模板
- Dijkstra模板
- Dijkstra 模板
- Dijkstra模板
- dijkstra 模板
- dijkstra模板
- dijkstra模板
- dijkstra模板
- [模板]Dijkstra
- dijkstra 模板
- 模板 Dijkstra
- 在web服务器启动时: java.util.zip.ZipException: error in opening zip file
- 微软笔试题 《Image Encryption》(最小表示法)
- Gym 100712F Travelling Salesman
- 【BZOJ】3390: [Usaco2004 Dec]Bad Cowtractors牛的报复
- 【Linux开发】【DSP开发】利用CCS6.1生成out文件的同时生成bin文件
- Dijkstra模板
- javase第二天
- IntelliJ IDEA 14 注册码
- java安装配置基础知识+数据库
- Android中的指纹识别
- 【Linux开发】如何在./configure的时候将编译参数传入,改变默认的编译器gcc成arm-linux-gcc
- 三十六计
- 【笔记】汉诺塔问题及python实现
- Tomcat设置角色和密码