图论
文章平均质量分 79
qhpeklh5959
哈工程小白,两个月前正式投入算法学习
展开
-
uva11478 Halum
微微发光的传送门题目中给了一种操作,就是制定一个d,和一个结点v,把所有以v为终点的边的权值减少d,把所有以v为起点的边权增加d,然后使最小的边权最大。看到最小最大这类的字眼,首先想到的就是二分答案,假设每一条边的边权都不小于x,对于一条边,是从a指向b的,然后假定sum(a)和sum(b)分别是左右于a和b上的所有操作的d的和,那么对于这条边,它的权重就应该是w+sum(a)-sum(b原创 2013-08-29 19:08:08 · 561 阅读 · 0 评论 -
UVA10765 Doves and bombs
题目链接给定一个连通图,求删除每一个点所能得到的连通块的个数如果那个点是割点,那么就求一下与它直接相连的点分布于多少个连通分量内,如果不是割点,那结果就是1#include #include #include #include #include #include using namespace std;const int maxn = 111111;int pre[ma原创 2013-06-03 18:45:31 · 956 阅读 · 2 评论 -
UVA11294 Wedding
微微发亮的传送门2-SAT问题输出可行解可以把一对夫妇当成一个节点,然后拆点的话,h和w分别为真和假,然后直接按照题目中说的建图染色即可#include #include #include #include #include #include using namespace std;const int maxn = 222;int pre[maxn], sccno[原创 2013-06-04 23:01:56 · 940 阅读 · 7 评论 -
LA3486 Cells
弱弱的链接给定一棵树,询问两个节点x和y,判断x是否是y的祖先好吧,我承认对于带时间戳dfs我还不是那么了解,看了题解之后才有恍然大悟的感觉,这种写法我记下了如果一个节点是另一个节点的祖先,那么我们遍历这棵树的时候,到达这个节点的时间肯定比另一个节点早,并且第二次到达这个节点的时候肯定比另一个节点晚,这就是时间戳的应用,那么我们只需要遍历一遍这棵树,O(n)的复杂度,预处理出来所有的节原创 2013-06-03 09:54:07 · 787 阅读 · 0 评论 -
UVA1146 Now or later
微微发亮的传送门一看要求一个最小的最大间隔,最小最大这类字眼,果断的就是二分枚举答案,然后进行验证,验证的时候就有一个炫酷的解法了,就是2-SAT判断是否矛盾,对于一个2-SAT问题,我们可以这么做,先用tarjan,然后判断同一个状态拆成的两个节点是否在一个连通分量内,如果在,表示矛盾,如果不在,表示成立,求可行解的方法就是重构一个有向无环图,按照拓扑序反向输出可行解。或者说我们可以假设原创 2013-05-30 00:47:35 · 1134 阅读 · 0 评论 -
UVA11324 The Largest Clique
通往另一个世界的虫洞tarjan缩点+dp求最长路#include #include #include #include using namespace std;struct edge{ int u, v, next;}e[55555];const int N = 1111;int pre[N], lowlink[N], sccno[N], dfs_clock, sc原创 2013-05-29 23:35:24 · 780 阅读 · 0 评论 -
UVA12167 Proving Equivalences
传说中的链接这道题,建图灰常的好建,就是把命题当成点,把证明关系当成有向边,求得就是最少加多少条边,使得整个图强连通。求一个强连通分量,然后答案就是出度为零的点和入度为零的点的最大值,因为只有出度或入度为零的点都连上边才能保证整个图都是强联通的。#include #include #include #include #include using namespace std;原创 2013-05-28 20:07:21 · 771 阅读 · 0 评论 -
UVA10054 The Necklace
深不可测的黑洞呼~~终于把它A掉了这道题是判断是否存在欧拉回路的,把颜色看成点,珍珠看成边,然后统计每一个点的度,如果有奇度就表明欧拉回路不存在,如果存在的话直接dfs出欧拉回路,然后扔到栈里最后直接输出就行了。(仰慕佳哥)#include #include #include #include #include using namespace std;const int N原创 2013-05-24 01:29:41 · 670 阅读 · 0 评论 -
POJ3259 Wormholes
微微发亮的传送门spfa求负环,如果某一个节点入队列N次,那么可以负环存在,否则不存在#include #include #include #include using namespace std;const int maxn = 555;int dist[maxn], cnt[maxn], n, m, w;bool inque[maxn];vector > g[maxn]原创 2013-05-14 01:25:38 · 610 阅读 · 0 评论 -
POJ2349 Arctic Network
题目链接:http://poj.org/problem?id=2349求最小生成树中第S大的边,结点给的是坐标(坑爹啊)#include #include #include #include #include #include using namespace std;#define N 500struct edge{ int u, v; double w;原创 2013-01-07 19:51:01 · 414 阅读 · 0 评论 -
POJ2236 Wireless Network
首先看到了给坐标的,我突然间一下子就蒙圈了,难道说我要用勾股定理去算出一个双精度距离?我的天前段时间被双精度坑出翔了的事儿我还记得,这次用双精度,我这不就是要找死吗?不过还好,后来想到了直接一个布尔表达式判断拉倒了……首先,所有的电脑的坐标全都给记下来,然后开始了指令的执行,再执行指令的时候,把所有能连接上的电脑合并到一个集合里面,然后需要检查两台电脑是否能够连接的时候,直接检查两个电脑是不是原创 2012-12-30 23:23:29 · 391 阅读 · 0 评论 -
UVA11080 Place the Guards
微微发亮的传送门这道题大体上就是对一个图进行染色,相邻的两个点不能被染上相同的颜色,那么对于图中的点,如果该点没被染色,就把它染色,同时向外扩展。每次染色一定就染完了一个连通块,所以最后要么所有点被染色,要么无解。最后选取用的比较少的颜色为答案。#include #include #include #include using namespace std;const int ma原创 2013-06-16 00:12:32 · 811 阅读 · 0 评论 -
UVA10972 RevolC FaeLoN
题目链接给定一个无向图,问最少添加多少条边,使得这个图成为连通图#include #include #include #include #include using namespace std;const int maxn = 1111;vector G[maxn], P[maxn];int pre[maxn], bccno[maxn], dfs_clock, bcc_cn原创 2013-06-18 21:49:29 · 630 阅读 · 0 评论 -
UVA610 Street Directions
题目链接给定一个无向图,问这个无向图里面那些边变成有向边以后,该图还是一个强连通图。求边-双连通分量,然后枚举所有边,如果边上两个点在同一个连通分量里面,就保留一个方向,否则的话就两个方向都保留,#include #include #include #include #include using namespace std;const int maxn = 1111;st原创 2013-06-18 21:54:16 · 842 阅读 · 0 评论 -
UVA11396 Claw Decomposition
题目链接如果把一个爪子的中心当成一个集合,剩下的三个点当做一个集合,而且数据已经保证了给的边和点数,那么我们只需要判断给的图是不是个二分图就行了。那么,怎么判断是不是二分图呢?对于一个点,我们把它染成颜色1,那么与它相连的点就都得被染成颜色2,如果染色过程中发现有一条边上的两个点被染成了相同的颜色,那么这个图就不是一个二分图。#include #include #include原创 2013-06-03 01:02:27 · 847 阅读 · 0 评论 -
UVA1364 Knights of the Round Table
微微发亮的传送门求无向图的双连通分量,然后判断这个双连通分量是否存在奇环,实际上,我们可以反着想,如果一个连通分量是个二分图,那么就必然不存在奇环,所以,我们对于每一个二分图,判断它是否是二分图,如果是,就把它放到结果中即可。至于判断奇环神马的模板,就是抄了抄佳哥的……其实上交的也不错……不过佳哥的我感觉更好一些#include #include #include #incl原创 2013-05-27 20:29:17 · 729 阅读 · 0 评论 -
UVA1423 Guess!
吞噬一切的虫洞这道题我们可以通过给定的正负关系求出来各个和的大小关系,然后把S当成一个点,大小关系当成有向边,这样通过求一个拓扑序我们就可以得到一个大小关系,然后直接通过大小关系进行赋值,最后通过a[i] = S[i] - S[i - 1]求得原序列元素。(S[i]是前i项和……)#include #include #include #include using namespa原创 2013-05-26 19:39:27 · 652 阅读 · 0 评论 -
POJ3041 Asteroids
传送门二分图最大匹配,把行和列分别看做两个点集,求得是最小点覆盖集。二分图最大匹配König定理:最大匹配数=最小点覆盖集,然后建好图以后直接套匈牙利算法模板像我这种图论的渣渣,到现在还真的是图论只会套模板。。#include #include #include using namespace std;const int maxn = 555;const int n原创 2013-05-14 00:49:01 · 652 阅读 · 0 评论 -
Croc Round1 D Connected Components
题目链接:http://codeforces.com/contest/292/problem/D给一个无向图,每次删除一些边,求它的连通分量。这道题第一眼看上去想到的就是并查集,不过并不是那么容易能想出来正解,因为如果使用一个裸的并查集必然会超时,所以说记录下来两个数组,一个数组记录的是从前往后找使任意某两个不连通的点连通的第一条边,另一个数组记录的就是从后往前找使任意两个不连通的点连通的第一原创 2013-04-16 09:00:45 · 699 阅读 · 0 评论 -
POJ3268 Silver Cow Party
题目链接:http://poj.org/problem?id=3268头一次用邻接矩阵写spfa,真心弱爆了,而且矩阵转置写错了,线性代数是硬伤啊……#include #include #include #include #include #include #include using namespace std;#define N 1010int e[N][N], n,原创 2013-02-06 04:23:38 · 381 阅读 · 0 评论 -
POJ2524 Ubiquitous Religions
直接合并,合并完以后看一共存在几个集合,我再查有几个集合的时候有点儿蛋疼捉急,哪位大神有好方法告诉一下哈~#include #include #include #include #include #include using namespace std;#define N 50010int p[N];int find(int x){ return p[x] != x ?原创 2012-12-29 23:09:09 · 401 阅读 · 0 评论 -
LA4080 Warfare And Logistics
微微发亮的传送门又来一弹白书例题,发现……往往是不看题解我是做不出来题的。。sad……首先这道题很容易让人一冲动就用floyd来解了,可是,明显folyd的复杂度我们是无法接受的,100个结点加上1000条边,一定会超时的,那么有关最短路的就剩下一个spfa和dijkstra了,在此时,就应该考虑一下这两个算法的特性了,spfa是无法记录路径的,它虽然快,但是我们要求很多次,复杂度就会变成原创 2013-08-25 17:46:26 · 1310 阅读 · 0 评论 -
UVA10917 A Walk Through the Forest
微微发亮的传送门思路比较简单,就是先求出来所有点到家的最短路,这个非常好求了,把家当做起点,dijkstra还是spfa都可以搞定,假设用d数组来保存最短路,然后对于某一个点A,如果存在一个点B,使得d[A] > d[B],就可以从A走到B,也就是说可以建立一条从A到B的有向边,这样的话,我们就能得到一个新图,只需要求从每一个点到终点有多少种方法即可,动态规划完全可以求出来。#includ原创 2013-08-24 09:57:04 · 566 阅读 · 0 评论 -
HDU4635 Strongly connected
又是一个强连通分量,首先我们要明确,加了边之后的图是一个什么图,一定存在两个部分,假设为x部分和y部分,那样的话,只要只存在从x出发到y得边就能保证这个图不是一个强连通图,同时边最多。x部分和y部分一定是完全图,因为我们要保证边尽量多嘛,那么这个图总有多少条边,x部分一共有x*(x-1)条边,y部分一共有y*(y-1)条边,然后x和y之间就是x个点,每个点往y中所有的点发射一条边,一共有x*y条边原创 2013-08-02 01:17:55 · 668 阅读 · 0 评论 -
HDU4421 Bit Magic
题目来源题目大意题里面那段原创 2014-09-12 16:39:29 · 591 阅读 · 0 评论