poj 3268 Silver Cow Party
2012-04-13 14:27
337 查看
思路:单源最短路,套用spfa模板,这里需要构造逆向边,调用两次spfa。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> using namespace std; const int N = 10009; const int inf = 1<<30; typedef struct node { int v, w, next; }node; node p1 , p2 ; bool vis ; int head1 , head2 , dis1 , dis2 ; queue <int> que; int n, m, x; void add_edge(int u, int v, int w, int i) { p1[i].v = v; p1[i].w = w; p1[i].next = head1[u]; head1[u] = i; p2[i].v = u; p2[i].w = w; p2[i].next = head2[v]; head2[v] = i; } void spfa(int dis[], node p[], int head[]) { memset(vis, 0, sizeof(vis)); while (!que.empty()) que.pop(); int i, u, v; for (i = 1; i <= n; ++i) dis[i] = inf; dis[x] = 0; vis[x] = 1; que.push(x); while (!que.empty()) { u = que.front(); que.pop(); for (i = head[u]; i != -1; i = p[i].next) { v = p[i].v; if (dis[v] > dis[u] + p[i].w) { dis[v] = dis[u] + p[i].w; if (!vis[v]) { vis[v] = true; que.push(v); } } } vis[u] = false; } } int main() { int i, u, v, w; while (scanf("%d %d %d", &n, &m, &x) != EOF) { memset(head1, -1, sizeof(head1)); memset(head2, -1, sizeof(head2)); for (i = 0; i < m; ++i) { scanf("%d %d %d", &u, &v, &w); add_edge(u, v, w, i); } int max_t = -1; spfa(dis1, p1, head1); spfa(dis2, p2, head2); for (i = 1; i <= n; ++i) { if (max_t < dis1[i] + dis2[i]) max_t = dis1[i] + dis2[i]; } printf("%d\n", max_t); } return 0; }
相关文章推荐
- POJ-3268 Silver Cow Party[Dijkstra] [邻接矩阵] [置换矩阵]
- POJ:3268-Silver Cow Party
- POJ-3268 Silver Cow Party(最短路spfa算法)
- poj 3268 Silver Cow Party & zoj 2008 Invitation Cards
- 【POJ】3268 - Silver Cow Party
- poj3268 -- Silver Cow Party
- POJ - 3268 Silver Cow Party(最短路)
- [POJ 3268 Silver Cow Party ]Dijkstra
- 【POJ】 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268-Silver Cow Party【正向+反向最短路】
- poj 3268 Silver Cow Party (spfa )
- POJ 3268 Silver Cow Party (dijkstra来回最短路)
- ShortestPath:Silver Cow Party(POJ 3268)
- Poj 3268 Silver Cow Party + Poj 1511 Invitation Cards (最短路反向建图)
- POJ 3268 Silver Cow Party
- poj 3268 Silver Cow Party 最短路
- POJ 3268 Silver Cow Party dijkstra();
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party (dijkstra)