ACM_最短路模板(SPFA,Dijkstra,Floyd)
2017-08-19 08:12
363 查看
#define Max 0x3f3f3f3f #define maxn 10010 int n,m; int Map[maxn][maxn]; int dist[maxn]; int vist[maxn];
Floyd:
void floyd() { int i,j,k; for (k=1; k<=n; k++) for(i=1; i<=n; i++) for (j=1; j<=n; j++) Map[i][j]=min( Map[i][j],Map[i][k]+Map[k][j] ); }
Dijkstra
void Dijkstra(int s) { int i,j; int u; int Min; for (i=1; i<=n; i++) { vist[i]=0; dist[i] = Map[s][i]; } vist[s] = 1; for (i=1; i<=n; i++) { Min=Max; u = -1; for (j=1; j<=n; j++) { if (vist[j]==0&&dist[j]<Min) { u = j; Min = dist[j]; } } if (u==-1) break; vist[u] = 1; for (j=1; j<=n; j++) { if(vist[j]==0) { if(dist[u]+Map[u][j]<dist[j]) dist[j] = dist[u]+Map[u][j]; } } } }
SPFA
void spfa(int s) { int i,now; for( i=1;i<=n;i++ ) { dist[i]=Max; vist[i] = 0; } dist[s] = 0; queue<int>q; q.push(s); vist[s] = 1; while (!q.empty()) { now = q.front(); q.pop(); vist[now] = 0; for( i=1;i<=n;i++) { if (dist[i]>dist[now]+Map[now][i]) { dist[i] = dist[now]+Map[now][i]; if (vist[i] == 0) { q.push(i); vist[i] = 1; } } } } }
相关文章推荐
- Floyd,Dijkstra,SPFA模板整理(以[HDU2544-最短路]为例 )
- ACM-最短路(SPFA,Dijkstra,Floyd)之最短路——hdu2544
- 最短路模板[spfa][dijkstra+堆优化][floyd]
- 最短路模板 Dijkstra+Floyd+SPFA
- 最短路模板 floyd+dijkstra+spfa
- hdu-2544-最短路(Dijkstra + Dijkstra优先队列 + Bellman-ford + SPFA +Floyd) 纯模板题
- ACM-最短路(SPFA,Dijkstra,Floyd)之最短路——hdu2544
- Hdu 2544 最短路 (Dijkstra+SPFA+Floyd模板)
- 模板--Floyd Dijkstra Bellman-Ford spfa 四种最短路经典算法
- ACM-最短路(SPFA,Dijkstra,Floyd)之最短路——hdu2544
- 【原创】最短路模板 Floyd,优先队列优化dijkstra,SPFA
- [模板]最短路 (Floyd, Spfa, Dijkstra,
- 最短路模板[spfa][dijkstra+堆优化][floyd]
- 最短路的三种算法(Floyd、Dijkstra、SPFA)
- HDU2544 最短路(模版题dijkstra/floyd/spfa)
- 【最短路三算法】Floyd,Dijkstra,SPFA.
- 最短路-dijkstra与floyd的邻接矩阵模板示例
- 带权最短路 Dijkstra, SPFA, Bellman-Ford, ASP, Floyd-Warshall 算法分析
- dijkstra,SPFA,Floyd求最短路
- 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)