
图论
文章平均质量分 76
cokoro
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
点连通分量-poj-2942Knights of the Round Table
点连通分量的例题贴一下点连通分量的模板解释一下这个模板。把父节点和子节点都存一个时间戳。然后不断dfs,同时更新lowver,即父节点 最早的时间戳如果更新成功,那就把栈里的边都取出来,放进同一个连通分量里面如果子节点已经被访问过了,说明形成了一个环,更新lowver,即父节点 最早的时间戳,并且返回该时间戳的值同时里面加上一个判断子节点个数的child变量。如果一个节点的父亲是-1而且只有一个孩子,那么这个根节点并不是割点原创 2015-03-24 15:17:02 · 385 阅读 · 0 评论 -
边连通分量/缩点-POJ3177-Redundant Paths
用tarjan 的强连通分量增加了两句话得到的求边连通分量的方法也就是因为无向图加了两条边之后有连回去的边,所以要判断下一个子节点是不是父亲节点,其余的和有向图的强连通分量没差。这个算法就是记录两个时间戳,一个是index,一个是low。不断dfs。然后通过子节点更新low 这样把子节点更新完之后,属于同一个边连通分量(可以两条路径经过同一个点,但是不能经过通一条边的叫做边连通分量)的点都原创 2015-03-25 09:00:47 · 395 阅读 · 0 评论 -
有向图强连通分量-poj-2186-Popular Cows
题意:有些牛有自己的偶像,偶像的偶像也是自己的偶像,问存在多少牛被所有牛崇拜。题解:牛a崇拜牛b就连一条a指向b的边,然后找出所有的强连通分量(即这个分量里的每个点都可以到达分量中的任意一个点)。判断有没有出度为0的强连通分量,而且这个点只有一个,如果有,那么答案就是这个强连通分量里面点的个数。顺便可以把这个作为强连通分量的模板。先放一个tarjan 强连通分量模板原创 2015-03-30 16:16:59 · 383 阅读 · 0 评论 -
tarjan -LCA POJ-3417-Network
先放一下tarjan离线求LCA的模板原创 2015-03-31 22:03:59 · 415 阅读 · 0 评论 -
dijkstra模板+ 缩点-bupt新oj-187- Find the Fastest Server
先放一下dijkstra的模板。不要问我为什么最短路这么基础的东西都要用模板!!!因为我图论弱啊!typedef pair P;int V;int d[SIZE_D];void dijkstra(int s){ V = N; priority_queue,greater > que; //fill(d,d + V, INF); //为何楼原创 2015-04-02 14:16:08 · 592 阅读 · 0 评论 -
2-SAT模板(scc强连通模板)-poj3683-Priest John's Busiest Day
我最爱的《挑战程序设计竞赛么么哒》上的例题先放一下2-SAT模板。也就是给一堆布尔变量(就是要么是真的要么是假的的一堆变量),和一堆布尔方程,问能否通过选择这些变量是真的还是假的,使得所有布尔方程都成立。注意一下,因为是用scc跑强连通,所以下面这个既是2sat,又是强连通的模板。强连通还有tarjan方法可以求,这是模板地址tarjan强连通模板讲一下scc求原创 2015-04-02 14:55:45 · 689 阅读 · 0 评论 -
(dinic增广网络流模板)(sizeof用法)poj-3469-Dual Core CPU
网络流。原理:1、把所有的顶点bfs,根据拓扑序列标记层数。2、dfs走一遍所有可走的子节点,同时把流量记下来。每次纪录流量的时候,正向边加上对应流量,反向边减去对应边,放一下模板int N,M;struct pp{ int v,next,w,re;}pra[SIZE_M];int e,head[SIZE_N];void init(){ e原创 2015-04-04 17:11:49 · 474 阅读 · 0 评论 -
(匈牙利模板)二分图匹配-poj-2226
匈牙利算法用于二分图最大匹配。步骤:1、这是待匹配的二分图。2、开始匹配第一个A1,随便匹配第一个B1,肯定会成功的啦。然后匹配左边第二个A2,发现匹配不成功。3、于是B1断开原有连接,让原有的左边A1去找下一个匹配,发现下一个匹配成功。4、然后匹配A3,发现B1已经连接,那就断开原有连接。但是断开原有连接,发现A2匹配失败了,于是A3继续匹配下原创 2015-04-04 21:49:20 · 471 阅读 · 0 评论