Dijkstra/SPFA
x_1023
这个作者很懒,什么都没留下…
展开
-
BZOJ 4152 The Captain - Dijikstra
思路、证明什么的都在代码的注释里。 需要说明的一点是STL堆默认为大顶堆,一定要记住。。。。 #include #include #include #include #include #include using namespace std; const int maxn=200005<<1; typedef pair node; struct edge {原创 2017-09-22 10:24:06 · 217 阅读 · 0 评论 -
BZOJ 1922 [Sdoi2010]大陆争霸 - Dijkstra
一遇到图论就一脸懵逼,二脸惶恐,三脸放弃。。。Dijkstra都不会写了,还是退役好了大概就是就是类似于拓扑排序那样,对于有限制的点,其父节点遍历完成后,该节点入度–,等到入度为0即可扔进队列。需要维护两个东西,一个是实际路程,另一个是其父节点的限制,二者取个max即可。图省事用pair一定要设为小顶堆啊啊啊,调了一个小时。。。 为什么会这么菜。。。#include<iostream> #incl原创 2017-10-27 00:39:58 · 256 阅读 · 0 评论 -
BZOJ 2763 [JLOI2011]飞行路线 - Dijkstra+分层图/DP
一道分层图的水题,觉得分层图这个玩意非常妙,于是就水了一波。。。记记好是无向图。。。向图。。。图。。。#include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<queue> #include<algorithm>using namespace std;const int maxn=1000005;原创 2017-10-27 09:43:51 · 206 阅读 · 0 评论 -
BZOJ 1880 [Sdoi2009]Elaxia的路线 - SPFA+拓扑排序
大家都说这是一道大水题。。。想打dyx应该了解到拓扑排序的功能,类比于食物链那道题,拓扑排序可以dp求出最长链。而在这道题只需求出可以重复的部分搞一个拓扑排序即可。而怎样求重复的部分呢?有一个思想很好:将一条线路拆分成起点到此的距离和终点到此的距离,跑两遍单源最短路,然后类似地枚举求出一些可以重复的路径,Topo一下就好了(尝试新代码风格2333,bz会卡空间,实测将边的数量开小一半就可以过了)#i原创 2017-10-30 14:25:01 · 325 阅读 · 0 评论 -
BZOJ 2330 [SCOI2011]糖果 - 差分约束
发现篇博文讲差分约束讲的挺好 http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html照着文章自学了一遍,发现这道题就是一道裸题嘛。 设一个超级源,表示基础的0,要求所有的值均严格大于0,spfa一下,将距离数组相加就是答案,若存在负环,则不存在一个合理解。关于差分约束的建图,还想mark一下: 1.若求一个变量xix_原创 2017-10-16 20:31:34 · 175 阅读 · 0 评论