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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

割点、割边(桥) tarjan

發布時間:2024/4/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 割点、割边(桥) tarjan 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定義

割點:無向圖刪掉一點和它所關聯的邊,圖的連通性增加。
割邊(橋):無向圖刪掉一邊,圖的連通性增加。

如何求割點?

求割點的時候分兩種情況:

  • 從根節點可以遍歷整個圖那么根節點就不是割點,否則就是割點。
  • 對于點UUU存在子節點VVVVVV可以訪問到UUU的父節點,那么點U就不是割點,否則就是割點。
  • int low[maxn], dfn[maxn], now, root = 1; vector<int> g[maxn]; set<int> ans; void init() {now = 0;mem(dfn, 0);mem(low, 0); } void addedge(int u, int v) {g[u].push_back(v);g[v].push_back(u); } void tarjan(int u, int fa) {low[u] = dfn[u] = ++now;int len = g[u].size();int son = 0;for (int i = 0; i < len; ++i) {int v = g[u][i];if (v == fa) continue;if (!dfn[v]) {tarjan(v, u);son++;low[u] = min(low[u], low[v]);if (u == root && son > 1) {ans.insert(u);}else if (u != root && dfn[u] <= low[v]){ans.insert(u);}}else{low[u] = min(low[u], dfn[v]);}} }
    如何求割邊?

    割邊等價于dfn[u]&lt;low[v]dfn[u] &lt; low[v]dfn[u]<low[v]

    割點 poj1144 Accode
    割邊 UVA796 Accode

    總結

    以上是生活随笔為你收集整理的割点、割边(桥) tarjan的全部內容,希望文章能夠幫你解決所遇到的問題。

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