题意:给你一张简单无向图,问你1到n的次短路。注意,可以不是简单路径。

存个次短路板子,原理还是挺简单,直接看代码吧。然后这份代码还是个fread的示例用法。

#include<cstdio>
#include<queue>
#include<algorithm>
#include<cstring>
using namespace std;
const int BUF=60000000;
char Buf[BUF],*buf=Buf;
inline void read(int&a){for(a=0;*buf<48;buf++);while(*buf>47)a=a*10+*buf++-48;}
#define N 100000+10
#define INF 1000000000000000ll
typedef long long ll;
typedef pair<ll, int> Point;
priority_queue<Point,vector<Point>,greater<Point> >Heap;
int n;
ll dist[N],dist2[N];
int e,first[N],nex[N<<1],v[N<<1],w[N<<1];
void AddEdge(int U, int V,int W){
v[++e]=V;
w[e]=W;
nex[e]=first[U];
first[U]=e;
}
int m,T;
int main()
{
int x,y,z;
// freopen("1011.in","r",stdin);
fread(Buf,1,BUF,stdin);
read(T);
for(;T;--T){
read(n); read(m);
e=0;
memset(first,0,sizeof(first));
for(int i=1;i<=m;++i){
read(x); read(y); read(z);
AddEdge(x-1,y-1,z);
AddEdge(y-1,x-1,z);
}
fill(dist,dist+n,INF);
fill(dist2,dist2+n,INF);
dist[0]=0;
Heap.push(Point(0,0));
while(!Heap.empty()){
Point o=Heap.top(); Heap.pop();
int U=o.second;
ll d=o.first;
if(dist2[U]<d){
continue;
}
for(int i=first[U];i;i=nex[i]){
ll d2=d+(ll)w[i];
if(dist[v[i]]>d2){
swap(dist[v[i]],d2);
Heap.push(Point(dist[v[i]],v[i]));
}
if(dist2[v[i]]>d2 && dist[v[i]]<d2){
dist2[v[i]]=d2;
Heap.push(Point(dist2[v[i]],v[i]));
}
}
}
printf("%lld\n",dist2[n-1]);
}
return 0;
}

最新文章

  1. CorelDRAW x6 X8安装失败解决方法
  2. Swift-11-协议(Protocols)
  3. ID3决策树算法原理及C++实现(其中代码转自别人的博客)
  4. go/wiki/MutexOrChannel Golang并发:选channel还是选锁?
  5. python 12
  6. 理解OpenShift(6):集中式日志处理
  7. 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)
  8. 关于dubbo服务超时的讨论
  9. jenkins 使用smtp2http 邮件服务,扩展灵活的构建通知功能
  10. MySQL 5.7.16 字符串拆分 -&gt; 单列变多行记录(转发)
  11. js模板 arttemplate 让数据与html分离
  12. Vue 父组件循环使用refs调用子组件方法出现undefined的问题
  13. html5 js 游戏的一篇博客 貌似不错
  14. Mac: iTerm2使用
  15. Application.streamingAssetsPath
  16. PHP之string之str_shuffle()函数使用
  17. 深搜———ZOJ 1004:anagrams by stack
  18. c++ 跳转语句块
  19. NSCharacter​Set 关于字符串编码
  20. 【Redis】- 安装为windows服务

热门文章

  1. Problem L. Visual Cube(杭电多校2018年第三场+模拟)
  2. Codeforces Round #482 (Div. 2) B题
  3. eCharts_数据过多底部滚动条实现数据展示
  4. css 背景透明,文字不透明
  5. auth src
  6. 1002: 当不成勇者的Water只好去下棋了---课程作业---图的填色
  7. swift中闭包的循环引用
  8. 如何在苹果官网下载旧版本的Xcode
  9. visualvm监控远程机器上的Java程序
  10. datatables的学习总结