POJ2914 Minimum Cut 最小割集

2021-06-23 05:11:50 字數 927 閱讀 7672

題目大意是,給定n個頂點,m條邊,兩個頂點之間可能有多條邊,求至少刪除多少條邊才能將該圖分成兩個子圖。

最小割集,典型的演算法stoer-wagner,就是那篇**,這裡也就不複製過來了,只是用prim求最大生成樹時,更新的「邊」不是普通意義上的邊,而是頂點到所有已劃分集合中的所有點的邊權值和,這裡要特別注意~ 直接貼**~

#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

int g[501][501];

bool visited[501];

int d[501];

int edge[501];

int main()

int minans = 1000000000;

int s = 0;

int v = -1;

edge[0] = 0;

for (int c = 0; c < n - 1;c++)

if (!visited[i] && d[i] > minedge)

}if (v == -1)

edge[v] = s;

s = v;

visited[s] = true;

}int total = 0;

for (int i = 0; i < n; i++)

if (total < minans)

g[s][edge[s]] = 0;

g[edge[s]][s] = 0;

for (int i = 0; i < n; i++)

}printf("%d\n", minans);

} return 0;

}

poj 1815(最小割 割集)

思路 題目要求是剔除多少個點,可以將其轉化為剔除多少條邊,因此需要拆點,將點i拆成i,i n,便容量為1,表示每個人起的傳遞作用只能是一次。然後就是列舉了,刪除某條邊,如果求出的最小割比原來的要小,說明減少的是割邊集。1 include2 include3 include4 include5 inc...

poj 3204 最小割(關鍵割邊)

題意 給出有n 個節點的網路,和m條單向邊,知道了每條邊的容量,問哪些邊滿足增加該邊的容量後,能使得從起點到終點的總流量增加 只能修改一條邊!注意一點,在一條流路中只能修改一條,好像s 1 2 t,假設每條邊的容量都是2,那麼最大流的流路只有一條,但是這條流路中,要想增大一條邊的容量而使整個網路的最...

poj 1815 最小割 列舉

題意 給乙個無向圖,求最少刪除多少個點,使得從s到t不連通,並輸出字典序最小的方案數。思路 拆點,從s到t跑一遍最小割,求出最少刪除的點數。關鍵是如何求字典序最小的方案,可以從1到n列舉每個點 拆成的邊 是否可以在最小割中,即把這個點所連的所有邊斷掉,再跑一遍最小割。如果最小割減小,就把這個點從割集...