题意:给你一张简单无向图,问你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;
}

【dijkstra】【次短路】【fread】hdu6181 Two Paths的更多相关文章

  1. Dijkstra最短路算法

    Dijkstra最短路算法 --转自啊哈磊[坐在马桶上看算法]算法7:Dijkstra最短路算法 上节我们介绍了神奇的只有五行的Floyd最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最 ...

  2. dijkstra(最短路)和Prim(最小生成树)下的堆优化

    dijkstra(最短路)和Prim(最小生成树)下的堆优化 最小堆: down(i)[向下调整]:从第k层的点i开始向下操作,第k层的点与第k+1层的点(如果有)进行值大小的判断,如果父节点的值大于 ...

  3. 【坐在马桶上看算法】算法7:Dijkstra最短路算法

           上周我们介绍了神奇的只有五行的Floyd最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最短路”.本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径 ...

  4. poj 2253 Frogger (dijkstra最短路)

    题目链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

  5. PAT 1018 Public Bike Management(Dijkstra 最短路)

    1018. Public Bike Management (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...

  6. PAT 甲级 1003Emergency(Dijkstra最短路)

    1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...

  7. 洛谷 P1529 回家 Bessie Come Home Label:Dijkstra最短路 && 乱搞

    题目描述 现在是晚餐时间,而母牛们在外面分散的牧场中. 农民约翰按响了电铃,所以她们开始向谷仓走去. 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数据中,总会有且只有一只最快的母牛). 在挤奶 ...

  8. dijkstra 最短路算法

    最朴素的做法o(V*V/2+2E)~O(V^2)#include<iostream>using namespace std;#include<vector>#include&l ...

  9. Dijkstra 最短路算法(只能计算出一条最短路径,所有路径用dfs)

    上周我们介绍了神奇的只有五行的 Floyd 最短路算法,它可以方便的求得任意两点的最短路径,这称为"多源最短路".本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做&q ...

随机推荐

  1. Machine Learning(CF940F+带修改莫队)

    题目链接:http://codeforces.com/problemset/problem/940/F 题目: 题意:求次数的mex,mex的含义为某个集合(如{1,2,4,5})第一个为出现的非负数 ...

  2. 【HNOI】trust 弦图最大独立集

    [题目描述]有n个人,每个人之间都有是否信任的关系,要求找出k个人,使得k个人之间彼此信任,且k最大,保证不信任的关系由多个三元环组成,且三元环之间只可能有公共点,没有公共边,且不存在任意一个节点不属 ...

  3. 阅读关于DuReader:百度大规模的中文机器阅读理解数据集

    很久之前就得到了百度机器阅读理解关于数据集的这篇文章,今天才进行总结!.... 论文地址:https://arxiv.org/abs/1711.05073 自然语言处理是人工智能皇冠上的明珠,而机器阅 ...

  4. dev_cpu_dead

    Kernel: 4.12.6 每个cpu都有自己的softnet_data结构,用来处理数据包接收,但是当softnet_data所在cpu无法工作时,即CPUHP_NET_DEV_DEAD状态,就需 ...

  5. Go语言大神亲述:历七劫方可成为程序员!

    “历劫1”:你坚信你可以用Go来做面向对象编程? 在经历了一次Go应用之旅之后,你可能就会开始思考:“怎么样才能让这种语言更像面向对象的编程语言?”因为你已经习惯了这种编程,你想要制作健壮的代码.想要 ...

  6. java中的数组与集合相互转换

    1.数组转换成集合 数组转换为集合,用Arrays.asList方法. public static void main(String[] args) { String[] arr = {"a ...

  7. 算法入门系列1:k-means

    k-means是一种无监督学习算法,用于聚类. 下图(来自http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html)展示了k-m ...

  8. 在cmd 中输入了错误mysql命令后,如何退出?

    例如: mysql> select * from tb_name          '>          '>          '>          '> 由于输错 ...

  9. SQL Server 2008的MSSQLSERVER 请求失败或服务未及时响应

    我的是SQL server 2008R2, 以前可以正常的启动SQL server(SQLEXPRESS).SQL server(MSSQLSERVER),有几天没有打开了,就在昨天 开机之后就无法启 ...

  10. SEO编辑必看:撰写搜索引擎喜爱的标题

    导读:非常有干货,百度站长平台刚发布了这篇篇文章,文章建议:1,标题字数控制在65个字节内,2,重要内容放在标题的最前面,3,添加与网页内容最相关的.用户更常用的.满足用户明确需求的.体现时效性.关键 ...