poj 3255次短路(暴力法)
来源:互联网 发布:数据统计 编辑:程序博客网 时间:2024/06/03 20:30
点击打开链接
http://poj.org/problem?id=3255
#include <iostream>#include <vector>#include <algorithm>#include <queue>#include <cstdio>#include <cstring>#define M 5010#define Me 200005const int Inf=1000001000;using namespace std;struct edge{edge(int a,int b) {to=a; cost=b;}int to;int cost;};vector<edge> g[Me]; // 邻接表 typedef pair<int ,int> P; // first 距离 sec编号 队列中元素 int dist1[M],dist2[M];long n,r;typedef struct{int x;int y;int cost;}Edg;Edg E[Me];void dijkstra(int s,int *dist){int i,j;priority_queue<P,vector<P>,greater<P> > que;dist[s]=0;que.push(P(0,s));for(i=0;i<g[s].size();i++) //初始化队列 {edge e=g[s][i];que.push(P(e.cost,e.to));}while(!que.empty()){P k=que.top();//当前最小的dist[i] 即为源点到i的最短距离 que.pop(); //当前最小的dist[i] 不会再更小 反证法...@路径递增 int v=k.second;if(dist[v]<k.first) continue;for(i=0;i<g[v].size();i++){edge e=g[v][i];if(dist[e.to]>dist[v]+e.cost){dist[e.to]=dist[v]+e.cost;que.push(P(dist[e.to],e.to));}}}}int main(){int i,j,a,b,c,k;fill(dist1,dist1+M,Inf);fill(dist2,dist2+M,Inf);scanf("%ld%ld",&n,&r);k=0;for(i=1;i<=r;i++){scanf("%d%d%d",&a,&b,&c);g[a].push_back(edge(b,c));g[b].push_back(edge(a,c));E[k].x=a;E[k].y=b;E[k].cost=c;k++;E[k].x=b; //注意双向边 E[k].y=a;E[k].cost=c;k++;}dijkstra(1,dist1);dijkstra(n,dist2);int min2=Inf; // 如果边在 最短路上则 dist1[x]+x,y+dist2[n]=dist[n]; for(j=0;j<k;j++) //暴力枚举边 如果边不在最短路上 则 dist1[x]+x,y+dist2[n]>dist[n]{////设 x y 是次短路上的一条边 则——> Min(dist1[x]+x,y+dist2[n])>dist[n] //找到不等于dist[n]的最小 x,y 即为次短路i=dist1[E[j].x]+E[j].cost+dist2[E[j].y];if(i!=dist1[n]){min2=min(min2,i);}}cout<<min2<<endl;return 0;}
0 0
- poj 3255次短路(暴力法)
- POJ 3255 (次短路)
- poj 3255(次短路)
- poj 3255(次短路)
- 次短路poj 3255
- POJ-3255次短路
- POJ 3255【次短路】
- POJ 3255 (次短路)
- Poj 3255(Dijkstra求次短路)
- POJ 题目3255Roadblocks(次短路)
- poj 3255 次短路算法(好)
- POJ 3255 Roadblocks(次短路)
- POJ 3255 Roadblocks(次短路)
- poj 3255 Roadblocks(次短路)
- POJ 3255 Roadblocks (次短路问题)
- POJ 3255(次短路+SPFA)
- POJ 3255 Roadblocks(次短路)
- POJ 3255 Roadblocks(次短路)
- iOS开发:application与currentDevice
- Autoencoder与RBM结合使用
- 大话数据结构与算法:算法初步1
- Spring与Quartz的整合实现定时任务调度
- Linux虚拟文件系统VFS简述
- poj 3255次短路(暴力法)
- 89-Ugly Number
- Java抽象类与接口的区别
- 如何理解:int main(int argc, char** argv)
- python + eclipse + pydev环境搭建
- Robberies
- angular指令
- caffe 编译出错
- FreeRTOS高级篇5---FreeRTOS队列分析