POJ 2125 最小點權覆蓋集(輸出方案)

2022-05-04 10:15:07 字數 812 閱讀 3554

題意:給乙個圖(有自迴路,重邊),要去掉所有邊,規則:對某個點,可以有2種操作:去掉進入該點

的所有邊,也可以去掉出該點所有邊,(第一種代價為w+,第二種代價為w-)。求最小代價去除所有邊。

己思:點的權被分為出入?必然拆點啊!每個點一分為二,點權:出的為出點權,入的為入點權,原來邊仍在

,注意,這裡(1-)->(1+),不多新增邊,因為相當於求新圖的最小點權覆蓋集(覆蓋所有邊,每選乙個點

恰好去除了它的邊(要原圖的入邊或出邊),),所以不可以在新圖上再新增邊(這裡不是到不到的問題了)

,若新增邊i-->i+,最小割可能發生變化。所以求二分圖最小割問題,=新添s,t的最大流。

這題要輸出方案,即最小點權覆蓋集的點,即最小割(該二分圖為簡單割),遍歷邊,若該邊倆頭

vis值(dinic後)不同,(i%2==0)必然為最小割邊。

ps:神題??

#include//110ms ,1a

#include#include#includeusing namespace std;

int n,m; int e[30000][3];int head[208];int nume=0;

const int inf=0x3f3f3f3f;

void addedge(int f,int l,int w)

int vis[205];int level[205];

bool bfs()}}

return vis[n*2+1];

}int dfs(int u,int minf)

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

for(int i=0;i

poj 2125 最小點權覆蓋

題意描述 給你一張有向圖,每個點有兩個權值 w w w 表示刪掉該點的所有入邊所需要的花費,w 表示刪掉該點的所有出邊所需要的花費,問要刪除所有的點需要的最少花費為多少?分析 因為涉及到了點權和所有的邊那麼很容易想到最小點權覆蓋,但是這裡每個點有兩個權值怎麼處理呢?這樣建圖 將點拆成兩個點,每個點對...

POJ 2125 網路流拆點最小點權覆蓋

destroying the graph poj 2125 目前想法是拆點加最小點權覆蓋 這道題的特殊點在於他還要尋找最小點權覆蓋選擇的是 1 n取s能遍歷到的點,n 1 2 n取s遍歷不到的點 那個求割點的重點在於一定要用visit,別用vis,重名了 題意就是 有乙個圖,兩種操作,一種是刪除某點...

poj 3308 最小點權覆蓋 最小割

思路 裸的最小點權覆蓋,建立超級源點和超級匯點,將源點與行相連,容量為這行消滅敵人的代價,將列與匯點相連,容量為這列消滅敵人的代價,對於每乙個敵人 x,y 連邊x y,容量為inf,這樣就說明選取的點覆蓋了那些邊 敵人 然後跑最大流求最小割即可。ps 這裡是乘積最小,要取對數轉化為和最小。1 inc...