BZOJ3511 土地劃分

2021-07-25 19:35:20 字數 1165 閱讀 6308

一眼最小割

考慮劃為s集代表a國,劃為t集代表b國

建圖:s連每個點流量va,每個點連t流量vb

對於每條邊,兩個端點點之間連雙向邊流量ec

新建乙個點x,s連x流量ea,x連兩個端點流量inf

再新建乙個點y,兩個端點連y流量inf,y連t流量eb

認為1號點va=inf,vb=0

n號點va=0,vb=inf

#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define maxn 100010

#define maxm 4000010

#define inf 1000000000

#define mod 1000000007

#define eps 1e-8

#define ll long long

struct vec;

vec mp[maxm];

int tai[maxn],cnt=1;

int q[maxn],hd,tl;

int d[maxn];

int s,t;

int ans;

inline void be(int x,int y,int z)

inline void bse(int x,int y,int z)

inline void bde(int x,int y,int z)

int bfs()

} }return d[t];

}int dfs(int x,int mx)

int i,y,re=0,tmp;

for(i=tai[x];i;i=mp[i].fro)

} }if(!re)

return re;

}int n,m,tot;

int main(){

int i,x,y,z;

scanf("%d%d",&n,&m);

s=n+1;

t=s+1;

tot=t;

ans+=inf*2;

bse(s,1,inf);

bse(n,t,inf);

for(i=2;i

BZOJ3511 土地劃分

給出n個點,m條邊,每個點有a和b兩種形態,一開始1為a,n為b 給出va i 和vb i 表示第i個點選擇a和b形態的價值 每條邊給出x,y,ea,eb,ec,表示如果x和y都為a,則獲得ea價值,如果都為b則獲得eb價值,否則會得到ec的費用 就是負價值 求出最大價值 神奇的最小割,太強了 建圖...

BZOJ3511 土地劃分 最小割

y國有n座城市,並且有m條雙向公路將這些城市連線起來,並且任意兩個城市至少有一條路徑可以互達。y國的國王去世之後,他的兩個兒子a和b都想成為新的國王,但他們都想讓這個國家更加安定,不會用武力解決問題。於是他們想將這個國家分成兩個小國家a國和b國。現在,a擁有1號城市,b擁有n號城市,其他的城市還尚未...

FZU Problem 1015 土地劃分

在dukeswood這塊土地上生活著乙個富有的農莊主和他的幾個孩子。在他臨終時,他想把他的土地分給他的孩子。他有許多農場,每個農場都是一塊矩形土地。他在農場地圖上劃上一些直線將矩形分成若干塊。當他划直線時,他總是從矩形邊界上的某一點劃到另乙個矩形邊界上的點,這條線的結束點將成為下一條線的起始點。他劃...