HDU-2544-最短路-模板
来源:互联网 发布:js设置input的value 编辑:程序博客网 时间:2024/06/07 18:04
//Dijkstra-感觉和prim很像,就是很像#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAX 0x3f3f3fint map[150][150];int dis[150];int n;int bj[150];void dijkstra(){ memset(bj,0,sizeof(bj)); memset(dis,0,sizeof(dis)); int pos = 1,i,j; for(i = 1; i <= n; i++) dis[i] = map[pos][i]; bj[1] = 1; for(i = 1; i < n; i++) { int min = MAX; for(j = 1; j <= n; j++) { if(min > dis[j] && !bj[j]) min = dis[pos = j]; } bj[pos] = 1; for(j = 1; j <= n; j++) { if(dis[j] > map[pos][j]+dis[pos]&& !bj[j]) dis[j] = map[pos][j]+dis[pos]; } } printf("%d\n",dis[n]);}int main(){ int m; while(~scanf("%d%d",&n,&m)) { int i, j; for(i = 1; i <= n; i++) for(j = 1; j <= n; j++) if(i!=j) map[i][j] = MAX; int u, v, w; for(i = 0;i < m; i++) { scanf("%d%d%d",&u,&v,&w); if(map[u][v]>w) { map[u][v] = w; map[v][u] = w; } } dijkstra(); } return 0;}
Bellman-ford,和krusal感觉很像,也可能是错觉
#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAX 0x3f3f3fint n,m, cont;struct node{ int u,v,w;}ls[15000];void BF(){ int dis[200]; for(int i = 0; i <= n; i++) dis[i] = MAX; dis[1] = 0; for(int i = 1; i < n; i++) for(int j = 0; j < cont; j++) { int a = ls[j].u, b = ls[j].v; if(dis[b] > dis[a] + ls[j].w) dis[b] = dis[a] + ls[j].w; } printf("%d\n",dis[n]);}int main(){ while(~scanf("%d%d",&n,&m)&&(n+m)) { int i; cont = 0; for(i = 0; i < m; i++) { int u, v, w; scanf("%d%d%d",&u,&v,&w); int flag = 0; for(int j = 0; j < cont; j++) { if((ls[j].u == u && ls[j].v == v)||(ls[j].u == v && ls[j].v == u)) if(ls[j].w > w) { ls[j].w = w; flag = 1; } } if(!flag) { ls[cont].u = u; ls[cont].v = v; ls[cont++].w = w; ls[cont].u = v; ls[cont].v = u; ls[cont++].w = w; } } BF(); } return 0;}
Floyd,感觉像暴力
#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAX 0x3f3f3fint n,m;int map[200][200];void Floyd(){ int i, j, k; for(i = 0;i <= n; i++) for(j = 0; j <= n; j++) for(k = 0; k <= n; k++) if(map[k][i] + map[i][j] < map[k][j]) map[k][j] = map[k][i]+map[i][j]; printf("%d\n",map[1][n]);}int main(){ while(~scanf("%d%d",&n,&m)&&(n+m)) { int i,j; for(i = 0; i <= n; i++) for(j = 0; j <= n; j++) if(i != j) map[i][j] = MAX; for(i = 0; i < m; i++) { int u, v, w; scanf("%d%d%d",&u,&v,&w); if(map[u][v] > w) { map[u][v] = w; map[v][u] = w; } } Floyd(); } return 0;}
SPFA 是在BF上优化的,加了队列,
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<iostream>#include<queue>#define Maxn 150#define Maxm 10000#define Max 10000using namespace std;int head[Maxm],bj[Maxn],dis[Maxn];int pos[Maxn];int n,m;struct node{ int v, w, next;}ls[20000];bool SPFA(int start){ queue<int>a; for(int i = 0; i <= n; i++) dis[i] = 9999999; bj[start] = 1; dis[start] = 0; a.push(start); while(!a.empty()) { int top = a.front(); a.pop(); pos[top]++; bj[top] = 0; if(pos[top] > n) return false; for(int i = head[top]; i!=-1;i = ls[i].next) { if(dis[ls[i].v] > dis[top] + ls[i].w) { dis[ls[i].v] = dis[top] + ls[i].w; if(!bj[ls[i].v]) { bj[ls[i].v] = 1; a.push(ls[i].v); } } } } return true;}int main(){ while(~scanf("%d%d",&n,&m)&&(n+m)) { memset(head,-1,sizeof(head)); memset(pos,0,sizeof(pos)); int k = 0; while(m--) { int u, v, w; scanf("%d%d%d",&u,&v,&w); ls[k].v = v; ls[k].w = w; ls[k].next = head[u]; head[u] = k++; ls[k].v = u; ls[k].w = w; ls[k].next = head[v]; head[v] = k++; } if(SPFA(1)) printf("%d\n",dis[n]); } return 0;}
0 0
- 【最短路模板】HDU 2544
- HDU-2544-最短路-模板
- HDU 2544 最短路 【最短路入门模板题】
- HDU 2544最短路dijkstra模板题
- Hdu 2544 最短路 模板题
- HDU 2544 最短路 (弗洛伊德模板)
- hdu 2544 最短路 spfa模板题
- hdu 2544 最短路(Dijkstra模板)
- HDU 2544 最短路(模板题)
- HDU 2544 最短路 (模板题)
- hdu 2544 最短路(模板)
- hdu 3790 最短路模板
- Hdu 2544 最短路 (Dijkstra+SPFA+Floyd模板)
- HDU 2544 最短路 SPFA 邻接表 模板
- HDU 2544 最短路( Dijkstra模板题/SPFA初学)
- hdu 2544 (最短路 Dijkstra模板题)
- HDU 2544 最短路 模板题 SPFA Dijkstra
- 【hdu 2544】最短路 (dijkstra算法模板题)
- CSS3.0盒模型display:-webkit-box;的使用
- 新公司入职遇到的一件事
- C++中如何理解容器适配器
- DOS format was specified but only a single line feed character was found, not 2
- instance()
- HDU-2544-最短路-模板
- 【Unity3D游戏开发】NGUI之游戏背景Texture采用UV纹理动画 (六)
- C++下基本类型所占位数和取值范围
- github的使用
- UIScrollView 与 Use Auto Layout
- 进程与线程的一个简单解释
- 牛客网做题总结:剑指offer中题目,java版三
- MySQL group_concat() 长度限制
- Algorithms—83.Remove Duplicates from Sorted List