POJ 2987 Firing 最大權閉合團

2022-08-19 08:12:11 字數 951 閱讀 6520

乙個點帶權的圖,有一些指向關係,刪掉乙個點他指向的點也不能留下,問子圖最大權值

題解:這是最大權閉合團問題

閉合團:集合內所有點出邊指向的點都在集合內

構圖方法

1.s到權值為正的點,容量為權值

2.權值為負的點到t,容量為權值絕對值

3.原圖所有點容量為inf

4.正權值和-最小割=最大權值

5.s能在殘餘網路中搜到的點就是刪除的點的個數

#include#include#include#includetypedef long long ll;

#define n 5010

#define m 120010

#define inf 100000000000000ll

using namespace std;

ll head[n],cur[n],n,m,w[n],s,t,lev[n],ecnt=1,ans,sum,vis[n];

queue q;

struct adj

e[2*m];

void add(ll u,ll v,ll w)

inline ll bfs()

q.pop();

}return lev[t]!=-1;

}inline ll dinic(const ll &u,const ll &flow)

}int main()

for (ll i=1,u,v;i<=m;i++)

scanf("%lld%lld",&u,&v),add(u,v,inf);

ans=sum-maxflow();

memset(vis,0,sizeof(vis));

vis[s]=1;

sum=0;

dfs(s);

printf("%lld %lld\n",sum,ans);

return 0;

}

poj 3041 Asteroids 最大匹配

把每一列當成乙個點,每一行當成乙個點,若行節點和列節點之間有邊,則表明該行列該列有乙個障礙物。可以放炸彈炸掉成行或者成列的障礙物!主要是構圖 將每一行當成乙個點,構成集合1,每一列也當成乙個點,構成集合2 每乙個障礙物的位置座標將集合1與集合2中的點連線起來,也就是將每乙個障礙物作為連線節點的邊。這...

POJ 1032 最大乘積

問題描述 乙個正整數一般可以分為幾個互不相同的自然數的和,如3 1 2,4 1 3,5 1 4 2 3,6 1 5 2 4,現在你的任務是將指定的正整數n分解成若干個互不相同的自然數的和,且使這些自然數的乘積最大。輸入格式 只乙個正整數n。輸出格式 是最大的乘積。輸入樣例 輸出樣例 30 資料範圍 ...

poj 2926 最大曼哈頓距離

題目大意 給你 個數的五維座標,要你求任意兩點之間的最大曼哈頓距離 思路 對於點i和j 曼哈頓距離為 x1 x2 y1 y2 去掉絕對值 x1 y1 x2 y2 且對應的位置加減符號相同 那麼對於五維座標就有2 5種可能 然後列舉求出最大值 include include define inf 0x...