hdu1874 Dijkstra(堆优化)+floyd
来源:互联网 发布:猎豹免费wifi软件 编辑:程序博客网 时间:2024/06/05 22:37
//感谢jianshen
#include <iostream>#include <cstdio>#include <algorithm>#include <cstdlib>#include <queue>#include <cstring>#include <utility>#define MAXN 2510#define MAXM 6210using namespace std;int n,m,s,t;typedef pair<int ,int> PII;struct edge {int v, w;edge *next;void add(int y, int z, edge *&head){ v = y; w = z; next = head; head = this; }}Te[MAXM*2],*Pe=Te,*head[MAXN*2];void add_edge(int x, int y, int z) {Pe++->add(y, z, head[x]);}int dist[MAXN];bool visit[MAXN];void dijkstra(int x) {priority_queue<PII>q;while (!q.empty()) q.pop();memset(dist, 0x3f, sizeof(dist));memset(visit, 0, sizeof(visit));dist[x] = 0;q.push(make_pair(0, x));while (!q.empty()) {while (!q.empty() && visit[q.top().second]) q.pop();if (q.empty()) break;PII t = q.top(); q.pop();int i = t.second;dist[i] = -t.first;visit[i]=true;for (edge *p = head[i]; p; p = p->next)if (!visit[p->v]) q.push(make_pair(-(dist[i] + p->w), p->v));}}void init(){ memset(head, 0, sizeof(head)); Pe=Te;for(int i=1;i<=m;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);add_edge(x,y,z); add_edge(y,x,z);} scanf("%d%d",&s,&t);}int main(){ while(scanf("%d%d",&n,&m)==2){ init(); if(s==t){cout<<0<<endl;continue;} dijkstra(s); cout<<(dist[t]==0x3f3f3f3f?-1:dist[t])<<endl; }}
floyd
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;const int MAXN = 555;int f[MAXN][MAXN], s, t, n, m;int main(){ while (~scanf("%d%d", &n, &m)) { memset(f, 0x3f, sizeof(f)); int tmp=f[1][1]; for (int i = 1; i <= m; i++) { int u, v, w; scanf("%d%d%d", &u, &v, &w); ++u; ++v;//注意下标位置 //printf("Add %d %d %d\n", u, v, w); f[u][v] = f[v][u] = min(w, f[u][v]);//邻接矩阵,重边= = } scanf("%d%d", &s, &t); if(s == t) {//特判 cout<<0<<endl; continue; } for (int k = 1; k <= n; k++) for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) if (f[i][j] > f[i][k] + f[k][j]) f[i][j] = f[i][k] + f[k][j]; printf("%d\n", f[s + 1][t + 1]==tmp?-1:f[s+1][t+1]); } return 0;}
0 0
- hdu1874 Dijkstra(堆优化)+floyd
- HDU1874:畅通工程续(Dijkstra/Floyd/SPFA)
- HDU1874畅通工程续 dijkstra&&floyd
- HDU1874 畅通工程续 (dijkstra,floyd)
- 最短路模板[spfa][dijkstra+堆优化][floyd]
- HDU 2544 最短路(单源最短路 dijkstra / floyd / dijkstra(堆优化)/dijkstra+邻接链表+堆优化)
- hdu1874(dijkstra解法优先队列优化)
- hdu1874畅通工程续【最短路dijkstra&&SPFA&&floyd】
- HDU1874-畅通工程续(Dijkstra算法+Floyd算法)
- hdu1874 畅通工程续(Dijkstra/Floyd/Bellman-Ford/SPFA)
- hdu1874(dijkstra)
- hdu1874 dijkstra
- hdu1874 dijkstra
- 堆优化的Dijkstra
- DIJKSTRA堆优化
- Dijkstra + 堆优化
- 堆优化Dijkstra模版
- Dijkstra+堆优化
- HDU 4960 Another OCD Patient(记忆化搜索)
- Linux select/epoll网络模型
- 继承和重写
- ubuntu 14.04安装SSH
- php 有趣的头像拼图
- hdu1874 Dijkstra(堆优化)+floyd
- 扯淡篇 之 笔试面试
- shell脚本相关
- ecshop中的浏览历史代码分析
- Color Theme安装设置
- UVA10603
- Snail—Hibernate之初识配置
- Objective-C 中的 @property和@synthesize
- 常用的android弹出对话框