![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论---图的联通
小松萘
厉害的人可真多啊
展开
-
欧拉路,欧拉回路,欧拉图
欧拉路: 路径:从S到T所有边经过一次 条件:除ST以外所有点度数为偶数,ST度数为奇数 欧拉回路 路径:从S回到S,所有边经过一次 条件:所有点度数为偶数 ???? ???? ???? int n,m; int head[MX],tot; struct{int v,nxt;}edge[MX]; void add(int u,int v) { edge[tot].v=v,edge[tot].nxt=head...原创 2020-04-12 12:24:33 · 125 阅读 · 0 评论 -
AcWing 367. 学校网络(度数统计)
???? ???? ???? 第二个问题是最少加多少边把一个有向图变成强连通图 (1)缩点之后统计每个点的入度和出度 (2)定义入度为0的点(起点)的个数为src,出度为0的点的个数为des,要送到所有的学校,只要在每个起点放一个即可 (3)转换强连通图,只要将所有的起点终点连到其他连通分量的终点起点即可 int n; vector<int>mp[111]; int tot,dfn[111],low[...原创 2020-04-07 11:03:45 · 211 阅读 · 0 评论 -
Tarjan系列
Tarjan算法作为一类算法,不同的应用写法不同,需要注意。 Tarjan求割点/桥: low[u]表示点u及其后代通过返祖边可以访问到的最小时间戳,所以不能回到父节点去。 割点有两种情况: (1)该点不是根节点,且该点的孩子结点不通过该点回不到祖先节点 (2)根节点显然不能通过上一条判断,所以需要对根节点进行特判,对于根节点,只要他有两个及以上的孩子结点,他就是一个割点 int n,m; set...原创 2020-04-07 10:37:44 · 100 阅读 · 0 评论 -
P3469 [POI2008]BLO-Blockade (Tarjan求割点,方案数)
????♂️ ????♂️ ????♂️ 注意根节点的特判,对于根节点,我们先以计算割点的方式计算他的子树对答案的贡献(否则如果直接用2*(n-1)显然是错的),然后判断根节点是不是根节点之后再进行进一步计算 int n,m; vector<int>vc[MX]; int tot,dfn[MX],low[MX]; int cut[MX];// 判读某点是不是割点,是为true ll ans[MX...原创 2020-04-06 22:31:46 · 124 阅读 · 0 评论 -
P3388 【模板】割点(割顶) (Tarjan求割点)
???? ???? ???? 看这个搞懂的 int n,m; set<int>ans; vector<int>vc[22222]; int tot,dfn[22222],low[22222];//时间戳以及连通分量中的最小时间戳 void tarjan(int x,int fx,int root)//当前结点,根节点,父结点 { dfn[x]=low[x]=++tot; ...原创 2020-04-06 20:55:19 · 99 阅读 · 0 评论