Dijkstra算法:POJ No 3268 Silver Cow Party
2017-05-22 22:36
369 查看
题目:http://poj.org/problem?id=3268
题解:使用 priority_queue队列对dijkstra算法进行优化
题解:使用 priority_queue队列对dijkstra算法进行优化
#include <iostream> #include <algorithm> #include <vector> #include <queue> #include <functional> #include <cstring> using namespace std; const int MAX_V = 1024 + 10; const int INF = 99999999; struct edge { int to, cost; edge() {} edge(int to, int cost) : to(to), cost(cost) {} }; typedef pair<int, int> P; //first 最短路径, second顶点编号 vector<edge> G[MAX_V]; //图 int d[MAX_V][MAX_V]; //最短距离 int V, E, X; //V顶点数,E是边数 //求解从顶点s出发到所有点的最短距离 void dijkstra(int s) { //升序 priority_queue<P, vector<P>, greater<P> > que; memset(d[s], 0x3f, MAX_V * sizeof(int)); d[s][s] = 0; que.push(P(0, s)); //最短路径,顶点编号 while (!que.empty()) { //每次出队最小的 P p = que.top(); que.pop(); int v = p.second; //编号 if (d[s][v] < p.first) continue; for (unsigned i = 0; i < G[v].size(); ++i) { edge e = G[v][i]; //与v临边的顶点 // d[s][e.to]经过 v 再经过其他的临边 if (d[s][e.to] > d[s][v] + e.cost) { d[s][e.to] = d[s][v] + e.cost; que.push(P(d[s][e.to], e.to)); } } } } void solve() { cin >> V >> E >> X; --X; int s, t, ct; while (E--) { cin >> s >> t >> ct; --s; --t; G[s].push_back(edge(t, ct)); } for (int i = 0; i < V; i++) { dijkstra(i); } int ans = 0; for (int i = 0; i < V; ++i) { if (i == X) continue; ans = max(ans, d[i][X] + d[X][i]); } printf("%d\n", ans); } int main() { solve(); return 0; }
相关文章推荐
- POJ 3268 Silver Cow Party 最短路—dijkstra算法的优化。
- POJ 3268 Silver Cow Party(最短路径dijkstra算法)
- POJ 3268 Silver Cow Party
- POJ-3268 Silver Cow Party(最短路spfa算法)
- 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
- poj 3268 Silver Cow Party(最短路矩阵转置~)
- 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
- POJ 3268 - Silver Cow Party
- (简单) POJ 3268 Silver Cow Party,Dijkstra。
- POJ 3268 Silver Cow Party
- poj 3268 Silver Cow Party (最短路算法的变换使用 【有向图的最短路应用】 )
- Dijkstra-POJ-3268-Silver Cow Party