日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU 3896 Greatest TC 双连通分量

發布時間:2024/7/19 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 3896 Greatest TC 双连通分量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意

給一個連通的無向圖,有兩種詢問:

  • \(a, b, c, d\),問如果刪掉\(c,d\)之間的邊,\(a,b\)之間是否還連通
  • \(a, b, c\),問如果刪掉頂點\(c\)\(a,b\)之間是否還連通

分析

首先DFS一遍求出進入節點的時間戳\(pre(u)\),離開節點的時間戳\(post(u)\)以及當前節點的子樹中能連接到的最小的DFS序\(low(u)\)
然后預處理一下\(u\)\(2^i\)級祖先,方便計算\(u\)的任意級祖先。

考慮第一種查詢

不妨設\(c\)\(d\)的兒子節點,如果\(c,d\)之間是一個橋并且\(a,b\)兩個節點一個在\(c\)的子樹中一個不在,這種情況下是不連通的。
其他情況都是連通的。

考慮第二種查詢

分成三種情況討論:

  • \(a,b\)都在子樹\(c\)中,如果\(a,b\)\(c\)的同一個兒子子樹中那么去掉\(c\)是連通的。
    否則,讓\(a,b\)往上跳,變成\(c\)的兩個兒子。如果\(low(a) \geq pre(c)\)\(low(b) \geq pre(c)\)有一個成立,那么是不連通的。

  • \(a,b\)只有一個在子樹\(c\)中,由于對稱性,不妨假設\(a\)在子樹\(c\)中。
    同樣讓\(a\)往上跳,變成\(c\)的兒子。如果\(low(a) \geq pre(c)\)那么不連通,否則連通。

  • \(a,b\)都不在子樹\(c\)中,那么去掉\(c\)完全沒有任何影響,所以還是連通的。

#include <cstdio> #include <cstring> #include <algorithm> using namespace std;const int maxn = 100000 + 10; const int maxm = 1000000 + 10;struct Edge {int v, nxt;Edge() {}Edge(int v, int nxt): v(v), nxt(nxt) {} };int ecnt, head[maxn]; Edge edges[maxm];void AddEdge(int u, int v) {edges[ecnt] = Edge(v, head[u]); head[u] = ecnt++;edges[ecnt] = Edge(u, head[v]); head[v] = ecnt++; }int n, m;int fa[maxn], dep[maxn]; int dfs_clock, pre[maxn], post[maxn], low[maxn]; bool isbridge[maxn], iscut[maxn];void dfs(int u) {bool flag = false;int child = 0;pre[u] = low[u] = ++dfs_clock;for(int i = head[u]; ~i; i = edges[i].nxt) {int v = edges[i].v;if(v == fa[u] && !flag) { flag = true; continue; }child++;if(!pre[v]) {fa[v] = u;dep[v] = dep[u] + 1;dfs(v);low[u] = min(low[u], low[v]);if(low[v] >= pre[u]) {iscut[u] = true;if(low[v] > pre[u]) isbridge[v] = true;}} else low[u] = min(low[u], pre[v]);}if(u == 1 && child == 1) iscut[u] = false;post[u] = dfs_clock; }int anc[maxn][20];void preprocess() {memset(anc, 0, sizeof(anc));for(int i = 1; i <= n; i++) anc[i][0] = fa[i];for(int j = 1; (1 << j) < n; j++)for(int i = 1; i <= n; i++) if(anc[i][j-1])anc[i][j] = anc[anc[i][j-1]][j-1]; }int upward(int u, int x) {for(int i = 0; i < 20; i++)if((x >> i) & 1) u = anc[u][i];return u; }int insubtree(int u, int v) {if(pre[v] <= pre[u] && pre[u] <= post[v]) return 1;return 0; }bool juedgeVertex(int a, int b, int c) {int in1 = insubtree(a, c);int in2 = insubtree(b, c);if(in1 & in2) {a = upward(a, dep[a] - dep[c] - 1);b = upward(b, dep[b] - dep[c] - 1);if(a == b) return true;if(low[a] >= pre[c]) return false;if(low[b] >= pre[c]) return false;}if(in1 ^ in2) {if(!in1) swap(a, b);a = upward(a, dep[a] - dep[c] - 1);if(low[a] >= pre[c]) return false;}return true; }int main() {while(scanf("%d%d", &n, &m) == 2) {ecnt = 0;memset(head, -1, sizeof(head));while(m--) {int u, v;scanf("%d%d", &u, &v);AddEdge(u, v);}dfs_clock = 0;memset(pre, 0, sizeof(pre));memset(isbridge, false, sizeof(isbridge));memset(iscut, false, sizeof(iscut));dfs(1);preprocess();int q;scanf("%d", &q);while(q--) {int op, a, b, c, d;scanf("%d%d%d%d", &op, &a, &b, &c);bool ok = true;if(op == 1) {scanf("%d", &d);if(dep[c] < dep[d]) swap(c, d);int in1 = insubtree(a, c);int in2 = insubtree(b, c);if(isbridge[c] && (in1 ^ in2) == 1) ok = false;} else {ok = juedgeVertex(a, b, c);}printf("%s\n", ok ? "yes" : "no");}}return 0; }

轉載于:https://www.cnblogs.com/AOQNRMGYXLMV/p/5361919.html

總結

以上是生活随笔為你收集整理的HDU 3896 Greatest TC 双连通分量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 九色影视 | 日韩中文字幕不卡 | 天天射干 | 一二三在线视频 | 99在线观看精品视频 | 久久久精品久久久久 | 国产视频91在线 | 黄色大片视频网站 | 亚洲va国产天堂va久久 en | chinese麻豆新拍video | 色呦呦免费 | 日韩欧美国产成人精品免费 | 国产经典久久久 | 色呦呦麻豆 | 青青草网址 | 草久在线观看视频 | 在线爱情大片免费观看大全 | www.四虎. | 色噜噜狠狠狠综合曰曰曰88av | 欧美精品首页 | 91亚洲成人 | 日韩欧美视频一区 | 日韩无码精品一区二区三区 | 一区二区啪啪啪 | 日夜夜操 | 亚洲天天看 | 欧美精品二区三区 | 体内精视频xxxxx | 久久色av | 亚洲天堂网络 | 日本中文有码 | 日韩av男人的天堂 | 国产嫩草在线 | 国产乱妇无码大片在线观看 | 91成人免费在线视频 | 亚洲一区视频在线 | 亚洲激情在线观看 | 亚欧洲精品视频在线观看 | 最新黄色av| 奇米色播 | 日韩美在线 | 欧美一二级 | 日本在线中文字幕专区 | 日韩女优在线视频 | 亚洲综合精品国产一区二区三区 | 毛片美女 | 69精品人人人人 | 国产情侣久久久久aⅴ免费 caoporn成人 | 国模无码视频一区 | 成人影片网址 | 在线观看免费黄视频 | 国产精品蜜臀av | 日本一区二区在线看 | 欧美三级黄色 | 波多野结衣人妻 | 日本色婷婷 | 人妻少妇精品一区二区三区 | 免费成人深夜夜视频 | 视频在线一区二区 | 三及毛片 | 久久99免费| 亚洲精品久久夜色撩人男男小说 | 免费看黄色片子 | 日韩av免费一区 | 婷婷综合亚洲 | 久久久久亚洲av成人无码电影 | 在线免费观看av网站 | 99久久久久无码国产精品 | 91麻豆精品一二三区在线 | 国内精品久久久久久久 | 国产欧美一级 | 男人操女人下面 | 亚洲三区在线 | 久久成人综合网 | 奇米影视在线视频 | 欧美亚色| 天堂成人在线视频 | 国产美女激情视频 | 影音先锋蜜桃 | 国产又黄又粗又爽 | 欧美综合一区二区 | 欧美在线精品一区二区三区 | 波多野结衣亚洲天堂 | 国产高清网站 | 爱情岛亚洲首页论坛 | wwwxxx日本人 | 婷婷色中文网 | 日韩人妻精品一区二区三区视频 | 久热在线视频 | 欧美男人亚洲天堂 | 国产成人在线影院 | 久久久综合av | 国产在线午夜 | 精品裸体舞一区二区三区 | 精品国产一区二区三区四区阿崩 | 1024精品一区二区三区日韩 | 啪啪啪毛片 | 韩国黄色片网站 | 成人手机av |