tarjan
softrice
这个作者很懒,什么都没留下…
展开
-
hdu 4635——Strongly connected
最终添加完边的图,肯定可以分成两个部X和Y,其中只有X到Y的边没有Y到X的边,那么要使得边数尽可能的多,则X部肯定是一个完全图,Y部也是,同时X部中每个点到Y部的每个点都有一条边,假设X部有x个点,Y部有y个点,有x+y=n,同时边数F=x*y+x*(x-1)+y*(y-1),整理得:F=N*N-N-x*y,当x+y为定值时,二者越接近,x*y越大,所以要使得边数最多,那么X部和Y部的点数的个数差原创 2013-08-01 17:26:00 · 779 阅读 · 0 评论 -
hdu 4612——Warm up
tarjan缩点+树的直径https://www.byvoid.com/blog/scc-tarjan/ 讲tarjian比较好http://blog.csdn.net/u010638776/article/details/9472605 借鉴了这里#include#include#include#include#pragma comment(linker, "/ST原创 2013-07-26 15:08:32 · 942 阅读 · 0 评论 -
poj 1236——Network of Schools
tarjan算法注意:如果是强连通图的化输出0 1通过tarjan算法缩点。第一问输出入度点=0的个数。第二问中添加的边数是max(入度点=0的个数,出度点=0的个数)。 暂且当定理记下。#include#include#includeusing namespace std;#define maxm 21000#define maxn 220int n;int h原创 2013-07-26 21:26:25 · 717 阅读 · 0 评论 -
poj 2942——Knights of the Round Table
tarjan求双联通+建反边+二分图判断奇偶环+交叉染色法判断该双连通分量是否为二分图代码是写出来了,原理还需掌握#include#include#includeusing namespace std;#define maxn 2100#define maxm 3100000int n,m;int map[maxn][maxn];int head[maxn]原创 2013-08-07 20:11:54 · 680 阅读 · 0 评论 -
hdu 4514—— 湫湫系列故事——设计风景线
tarjan+bfs搜索#include#include#include#include#pragma comment(linker, "/STACK:1024000000,1024000000") //扩栈 using namespace std;#define maxn 110000#define maxm 2100000int n,m;int head[原创 2013-09-26 18:32:51 · 712 阅读 · 0 评论 -
hdu 4421——Bit Magic
http://www.cnblogs.com/wuminye/p/3274609.html第一道2-sat,模仿着写。#include#include#includeusing namespace std;#define maxn 1100#define maxm (maxn*maxn)int n;int head[maxn],v[maxm],next[maxm]原创 2013-10-20 21:33:18 · 757 阅读 · 0 评论 -
poj 2186——Popular Cows
tarjan缩点题意:有n个牛,m个关系。并且如果a->b b->c 则a->c.先用tarjan把各个强连通分量缩成一个点,(这个点里的奶牛互相仰慕)并且记录下各个强连通分量里点的个数。找出出度为0的强连通分量,若只有1个,则输出该强连通分量里点的个数。若找到多个出度为0的强连通分量,输出0.//148K 16MS c++#include#include#inclu原创 2013-07-26 16:32:02 · 859 阅读 · 0 评论