poj 3268 spfa 和dijkstra堆优化 +矩阵逆转。
来源:互联网 发布:sybase数据库厂家 编辑:程序博客网 时间:2024/04/30 13:07
ps 这道题用floyd准超时。
所以只能用spfa或者dijkstra堆优化
spfa代码:
#include <iostream>#include<queue>#include <vector>using namespace std;struct edge{int from,to,cost;}e[110000];vector<edge>map[1100];int d[1100],ans[1100];int n,m,x;void spfa(int x){bool used[1100]={0};fill(d,d+n+2,321321321);queue<int>que;d[x]=0;used[x]=1;que.push(x);while(!que.empty()){int id=que.front();used[id]=0;for(int i=0;i<map[id].size();i++){edge t=map[id][i];if(d[t.to]>d[id]+t.cost){d[t.to]=d[id]+t.cost;if(!used[t.to]){used[t.to]=1;que.push(t.to);}}}que.pop();}}int main(){cin>>n>>m>>x;for(int i=1;i<=m;i++){cin>>e[i].from>>e[i].to>>e[i].cost;map[e[i].from].push_back(e[i]);}spfa(x);for(int i=1;i<=n;i++){ans[i]=d[i];map[i].clear();}for(int i=1;i<=m;i++){swap(e[i].from,e[i].to);map[e[i].from].push_back(e[i]);}spfa(x);int maxn=0;for(int i=1;i<=n;i++){ans[i]+=d[i];maxn=ans[i]>maxn?ans[i]:maxn;}cout<<maxn<<endl;return 0;}
#include <iostream>#include <queue>#include <vector>#include <functional>using namespace std;struct edge{int from,to,cost;};vector <edge> map[1100];typedef pair<int,int>P;int n,m,x;int d[1100],ans[1100];edge e[110000];void dijkstra(int a){for(int i=1;i<=n;i++)d[i]=100000000;d[a]=0;priority_queue<P,vector<P>,greater<P> >que;que.push(P(0,a));while(!que.empty()){ P p=que.top();que.pop();int v=p.second;if(d[v]<p.first)continue;for(int i=0;i<map[v].size();i++){edge e=map[v][i];if(d[e.to]>d[v]+e.cost){d[e.to]=d[v]+e.cost;que.push(P(d[e.to],e.to));}}}}int main(){cin>>n>>m>>x;for(int i=1;i<=m;i++){cin>>e[i].from>>e[i].to>>e[i].cost;map[e[i].from].push_back(e[i]);}dijkstra(x);for(int i=1;i<=n;i++){ans[i]=d[i];map[i].clear();}for(int i=1;i<=m;i++){swap(e[i].from,e[i].to);map[e[i].from].push_back(e[i]);}dijkstra(x);int maxn=0;for(int i=1;i<=n;i++){ans[i]+=d[i];maxn=ans[i]>maxn?ans[i]:maxn;}cout<<maxn<<endl;return 0;}
0 0
- poj 3268 spfa 和dijkstra堆优化 +矩阵逆转。
- poj 3268 Dijkstra+矩阵逆转让多源变单源
- POJ 3013 Big Christmas Tree【最短路变形,DIjkstra堆优化+spfa算法】
- POJ 1511 Invitation Cards 【最短路,spfa算法,Dijkstra算法堆优化】
- P3371 【模板】单源最短路径 SPFA优化 dijkstra堆优化
- poj 3268 Silver Cow Party Dijkstra 和SPFA
- 最短路模板[spfa][dijkstra+堆优化][floyd]
- poj 2502 题解 & dijkstra的堆优化
- POJ 3159 Candies (Dijkstra+堆优化) .
- poj 3268 Silver Cow Party , spfa , dijkstra
- POJ 3268 Dijkstra+priority_queue或SPFA
- spfa dijkstra队列优化
- 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)
- 再谈Dijkstra算法和堆优化
- POJ 1511 Invitation Cards (spfa||堆优化)
- Candies POJ 3159 (堆优化的SPFA,)
- 堆优化SPFA
- SPFA 堆优化模板
- 字体设置例子
- 《从程序员到项目经理》读书笔记(四) :程序员加油站 -- 不是人人都懂的学习要点
- UVA - 488 - Triangle Wave
- 类与接口的一个有趣程序例子
- 善用Android预定义样式
- poj 3268 spfa 和dijkstra堆优化 +矩阵逆转。
- Python3.2 官方文档教程--列表
- 使用for循环,计算2+4+6+...+100
- Python3.2 官方文档教程---列表当做栈、队列和递推式列表
- Unique Binary Search Trees I & II
- CodeForces 414 C. Mashmokh and Reverse Operation
- Photoshop cs5 学习--ps软件的历史
- day19全站中文乱码过滤器
- private