关键词:
题目链接:http://poj.org/problem?id=3255
解题思路:
昨晚两点多睡不着翻起来刷《挑战》的题,结果遇到这道求次短路的题,一脸懵逼。想了半小时没什么思路就看他的解答了。具体看代码吧,讲解可以参考《挑战程序设计竞赛》P119。其实还是Dijkstra算法的变形。但是这个变形确实不太好想。
AC代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <vector> 4 #include <queue> 5 using namespace std; 6 typedef pair<int,int> P; 7 const int maxn=5000+3,inf=0x7ffffff; 8 struct edge{ 9 int to,cost; 10 }; 11 vector<edge> G[maxn]; 12 int d[maxn],d2[maxn]; 13 int main() 14 { 15 int N,R,A,B,D; 16 scanf("%d%d",&N,&R); 17 while(R--){ 18 scanf("%d%d%d",&A,&B,&D); 19 edge temp; 20 temp.cost=D; 21 temp.to=B; G[A].push_back(temp); 22 temp.to=A; G[B].push_back(temp); 23 } 24 priority_queue<P,vector<P>,greater<P> > que; 25 for(int i=1;i<=N;i++) d[i]=d2[i]=inf; 26 d[1]=0; 27 que.push(P(0,1)); 28 while(!que.empty()){ 29 P p=que.top(); que.pop(); 30 int v=p.second; 31 if(d2[v]<p.first) continue; //如果次短路都比此短,那么就没有更新的必要了 32 for(int i=0;i<G[v].size();i++){ 33 edge e=G[v][i]; 34 int dt=p.first+e.cost; //一开始那个p.first被我携程d[v]了,很显然有bug 35 if(d[e.to]>dt){ 36 swap(d[e.to],dt); 37 que.push(P(d[e.to],e.to)); 38 } 39 if(d2[e.to]>dt&&dt>d[e.to]){ 40 d2[e.to]=dt; 41 que.push(P(d2[e.to],e.to)); 42 } 43 } 44 } 45 printf("%d ",d2[N]); 46 47 return 0; 48 }
poj3255roadblocks
RoadblocksTimeLimit: 2000MS MemoryLimit: 65536KTotalSubmissions: 13216 Accepted: 4660DescriptionBessiehasmovedtoasmallfarmandsometimesenjoysreturningtovisitoneofherbestfr 查看详情
poj3255roadblocks
RoadblocksTimeLimit: 2000MS MemoryLimit: 65536KTotalSubmissions: 13594 Accepted: 4783DescriptionBessiehasmovedtoasmallfarmandsometimesenjoysreturningtovisitoneofherbestfr 查看详情
poj3255
poj3255题意:输入u,r表示有n个点,r条无向边输出1到n的次短路。题解:单源最短路,使用优先队列优化。模板题。#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<vector>#include<map>#include&l 查看详情
次短路poj3255(代码片段)
DescriptionBessiehasmovedtoasmallfarmandsometimesenjoysreturningtovisitoneofherbestfriends.Shedoesnotwanttogettoheroldhometooquickly,becauseshelikesthesceneryalongtheway.Shehasdecidedtotakethese 查看详情
poj3255
题目链接:http://poj.org/problem?id=3255解题思路: 昨晚两点多睡不着翻起来刷《挑战》的题,结果遇到这道求次短路的题,一脸懵逼。想了半小时没什么思路就看他的解答了。具体看代码吧,讲解可以参考《挑战程序设计竞赛》... 查看详情
poj3255roadblocks[次短路]
RoadblocksTimeLimit: 2000MS MemoryLimit: 65536KTotalSubmissions: 12697 Accepted: 4491DescriptionBessiehasmovedtoasmallfarmandsometimesenjoysreturningtovisitoneofherbestfr 查看详情
poj3255
1#include<iostream>2#include<queue>3#defineINF10000004usingnamespacestd;5typedefpair<int,int>P;//first是最短距离,second是顶点编号6structedge7{8intto,cost;9edge(inttt,intcc)10{11to=tt;12c 查看详情
[poj3255]次短路
给出一张有n个点和m条双向边的图,要求求出1到n的次短路的长度。一条边可以多次通过。输入格式:第一行为两个整数n和m。接下来的m行每行三个整数ai,bi,vi,分别表示这条路连着的两个点和他的长度。输出格式:一个整数,表... 查看详情
如何用求次长边——poj3255题解(代码片段)
...从1到n的次短路。其中(nle5000),(mle100000)。题目传送门POJ3255思路其实求次长路是很简单的一个问题,但是网上却有很多算法都过于复杂了。首先我们先求出从1到每个结点的最短路长度(用Dijkstra或者是SPFA都可以),存入数组(dis1)... 查看详情
roadlocks(poj3255)
1,直接上英文题目我果然不咋懂。2,这个edge了啥的用法我不清楚。 typedefpair<int,int>P;priority_queue<P,vector<P>,greater<P>>que; 把这个搞清楚下挺好的,“typedef为C语言的关键字,作用是为一种数据类型定义一个... 查看详情
3255:十进制到六进制-poj
3255:十进制到六进制总时间限制: 1000ms 内存限制: 65536kB描述进制转换:将十进制(不超过int类型表示的范围)的数转换为六进制的数.输入输入为第一行是组数n,后面n行是需要进制转换的十进制数.输出进制转换后的n行六... 查看详情
poj-3255roadblocks
求次短路问题,方法类似于求单源最短路,不过本题是将单源最短路和次最短路一块求解 到某一点次最短路(eg:u):假设最短路为s->v->u,次短路为s->v->u‘或s->v‘->u注:s->v‘表示s->v的次短路,v->u‘表... 查看详情
前端学习(3255):react中动态初始化结果
luogup3255[jloi2013]地形生成动态规划(代码片段)
出题人语文真好...各不相同的标号和高度=各不相同的标号+单独的高度... 第一问比较简单,考虑从大到小插入,在相同情况下,按关键值从小到大插入这样子,关键大的元素一定会影响到关键小的元素,不会漏统计插入$... 查看详情
aaa认证
...168.2.2255.255.255.0RADIUSServerNIC192.168.3.2255.255.255.0PCaNIC192.168.1.3255.255.255.0PCbNIC192.168.2.3255.255.255.0PCcNIC192.168.3.3255.255.255.0 配置过程a.在路由器R1上配置一个本地用户账号并且利用本地AAA通过console线和VTY连接认证R1(config)#usernameadmin1pass... 查看详情
poj刷题指南
OJ上的一些水题(可用来练手和增加自信)(POJ3299,POJ2159,POJ2739,POJ1083,POJ2262,POJ1503,POJ3006,POJ2255,POJ3094)初期:一.基本算法:枚举.(POJ1753,POJ2965)贪心(POJ1328,POJ2109,POJ2586)递归和分治法.递推.构造法.(POJ3295)模拟法.(POJ1068,POJ2632,POJ1573,POJ2993,POJ2996)... 查看详情
程序员必须掌握哪些算法
一.基本算法:枚举.(poj1753,poj2965)贪心(poj1328,poj2109,poj2586)递归和分治法.递推.构造法.(poj3295)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法:图的深度优先遍历和广度优先遍历.最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra)(poj1860,po... 查看详情
acm入门学啥
...信息学竞赛》。计划:ACM的算法(觉得很好,有层次感)POJ上的一些水题(可用来练手和增加自信)(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)初期:一.基本算法:(1)枚举.(poj1753,poj2965)(2)贪心(poj1328,poj2109,poj2586)(3)递归和... 查看详情