博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【dijkstra】【次短路】【fread】hdu6181 Two Paths
阅读量:6335 次
发布时间:2019-06-22

本文共 1232 字,大约阅读时间需要 4 分钟。

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

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

#include
#include
#include
#include
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 1000000000000000lltypedef long long ll;typedef pair
Point;priority_queue
,greater
>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]
d2){ swap(dist[v[i]],d2); Heap.push(Point(dist[v[i]],v[i])); } if(dist2[v[i]]>d2 && dist[v[i]]

转载于:https://www.cnblogs.com/autsky-jadek/p/7425381.html

你可能感兴趣的文章
项目经理成长日记(5)——五指有长短,能力各不同
查看>>
JVM的基本结构
查看>>
kvm(四)客户机vm的存储格式
查看>>
Windows10 之移除Cortana、 Microsoft Edge、联系支持人员和Windows 反馈等应用
查看>>
nagios使用gmail发送邮件 取mysql数据库的字段并邮件通知
查看>>
利用Content-Disposition控制浏览器下载或直接打开
查看>>
修复Linux操作系统的Root密码
查看>>
ExtJS2.0开发与实践笔记[0]——初识ExtJS
查看>>
ext4 文件系统的优化
查看>>
CCNP听课笔记10
查看>>
推荐几款清新Silverlight 4样式模板(Theme)
查看>>
Hyper-V 2016 系列教程16 Hyper-V 集成服务
查看>>
【编译打包】folly-0.31-1.el7.centos.src.rpm
查看>>
移动用户体验设计中的原型应用
查看>>
A10虚拟化技术在“云计算”中的应用
查看>>
windows7显示摄像头图标的方法
查看>>
nginx apache Smokeping 安装配置
查看>>
实战1:创建Windows Server 2008域
查看>>
DAO-数据访问对象(Data Access Object) 模式
查看>>
失声的黄莺
查看>>