连通
文章平均质量分 73
qq172108805
这个作者很懒,什么都没留下…
展开
-
poj1236--强连通--tarjan--补强连通--最优分发
#include#include#includeusing namespace std;stacks;char map[110][110];char fang[110];int low[110];int ru[110],chu[110],ins[110];int n,ret,bian;int belong[110];void tarjan(int x){ int i,j;原创 2012-07-16 20:35:19 · 1336 阅读 · 0 评论 -
hdu 4612 Warm up - 双连通 + 树形DP
/*hdu 4612 Warm up - 双连通 + 树形DP题意很简单通过双连通缩图,构成一棵树,然后求最长链,连接首尾即可。剩下的连通块就是所求*/#pragma comment(linker,"/STACK:102400000,102400000")#include #include const int N=200000+10,M=1000000+10;int原创 2013-07-28 10:27:21 · 990 阅读 · 0 评论 -
zoj1119--双连通--寻找关节点---计算子网数
/*通过这个过程,可以发现一条规律: 当v是树根,如果它有2个或者更多儿子,那么它是一个关节点。 当v不是树根,当且仅当它有至少一个儿子w, 且从w出发,不能通过w的后代顶点组成的路径和一条回退边到底u 的任意一个祖先顶点,此时v 是一个关节点。 其道理很明显,如果树根包含多个儿子,那么把根节点去掉,整棵树自然被分成多个不相干的部分,图也就断开了。如果v是非根顶点,如果其子树中的节点均没有原创 2012-07-16 20:34:15 · 1056 阅读 · 0 评论 -
hdu 4635 Strongly connected 强连通
/*hdu 4635 Strongly connected 强连通题意:给一个简单(无重边,无自环:就是自己直接指向自己的边)有向图,若是强连通的,就输出-1否则输出可以最多加多少条边还是非强连通的;加完边的状态就是,有两个强连通块儿(包含的点数分别是n,m),各自内部任意两点之间都有两条不同方向的边,两个块儿之间只有单方向的边,另一个方向的边是因为保持非强连通牺牲掉的(数量是n*m原创 2013-08-01 20:29:14 · 908 阅读 · 0 评论 -
poj3352--旅游岛修路--双连通--无向图邻接表的容量是边数量的2倍
#include#includeint head[1010],low[1010],fang[1010],du[1010];struct node{ int v,next;}e[2001];//这地儿老郁闷了,没有注意到无向图存边需要的是边数量的2倍,之前老是WAint yong,n,r;int min(int a,int b){ if(a<b) return a; ret原创 2012-07-16 20:34:47 · 1748 阅读 · 0 评论 -
hdu1269--求强连通分量个数--tarjan--图的静态邻接表
#include#include#includeusing namespace std;stacks;int ret;struct node{ int v,next;} e[100010];int ins[10010],fang[10010],head[10010],low[10010];int n,m,yong;void tarjan(int k){ int j,u;原创 2012-07-16 20:35:52 · 3149 阅读 · 0 评论