bzoj1412 網路流最小割

2022-08-20 18:03:13 字數 2746 閱讀 8748

狼愛上羊啊愛的瘋狂,誰讓他們真愛了一場;狼愛上羊啊並不荒唐,他們說有愛就有方向......」 orez聽到這首歌,心想:狼和羊如此和諧,為什麼不嘗試羊狼合養呢?說幹就幹! orez的羊狼圈可以看作乙個n*m個矩陣格仔,這個矩陣的邊緣已經裝上了籬笆。可是drake很快發現狼再怎麼也是狼,它們總是對羊垂涎三尺,那首歌只不過是乙個動人的傳說而已。所以orez決定在羊狼圈中再加入一些籬笆,還是要將羊狼分開來養。 通過仔細觀察,orez發現狼和羊都有屬於自己領地,若狼和羊們不能呆在自己的領地,那它們就會變得非常暴躁,不利於他們的成長。 orez想要新增籬笆的盡可能的短。當然這個籬笆首先得保證不能改變狼羊的所屬領地,再就是籬笆必須修築完整,也就是說必須修建在單位格仔的邊界上並且不能只修建一部分。

檔案的第一行包含兩個整數n和m。接下來n行每行m個整數,1表示該格仔屬於狼的領地,2表示屬於羊的領地,0表示該格仔不是任何乙隻動物的領地。

檔案中僅包含乙個整數ans,代表籬笆的最短長度。

2 22 2

1 1

2資料範圍

10%的資料 n,m≤3

30%的資料 n,m≤20

100%的資料 n,m≤100

本題是經典的網路流最小割模型的應用

t的莫名其妙,明明是dinic模板

#include#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;typedef

long

double

ld;typedef pair

pr;const

double pi=acos(-1

);#define rep(i,a,n) for(int i=a;i<=n;i++)

#define per(i,n,a) for(int i=n;i>=a;i--)

#define rep(i,u) for(int i=head[u];i;i=next[i])

#define clr(a) memset(a,0,sizeof(a))

#define pb push_back

#define mp make_pair

#define fi first

#define sc second

#define pq priority_queue

#define pqb priority_queue , less>

#define pqs priority_queue , greater>

#define vec vector

#define t 10001ld eps=1e-9

;ll pp=1000000007

;ll mo(ll a,ll pp)

ll powmod(ll a,ll b,ll pp)

void fre()

//void add(int x,int y,int z)

int dx[5]=,dy[5]=;

ll read()

#define m 500005

#define n 50005

const

int inf=1

<<30

;int

head[n],level[n],q[n],e,n,m;

struct

e_nodeedge[m];

int map[1005][1005

];void add(int x,int y,int

z)int bfs(int s,int

t) }

}return0;

}int dfs(int u,int maxf,int

t) }

return

ret;

}int dinic(int s,int

t)void

build()}}

}int

main()

#include#include

#include

#define inf 0x7fffffff

#define t 10001

using

namespace

std;

int head[10005],q[10005],h[10005

];int cnt=1

,ans,n,m;

int xx[4]=,yy[4]=,mp[105][105

];struct datae[500001

];void ins(int u,int v,int

w)void insert(int u,int v,int

w)bool

bfs()

i=e[i].next;}}

return h[t]==-1? 0:1; }

int dfs(int x,int

f) i=e[i].next;

}if(!used)h[x]=-1

;

return

used;

}void dinic()

void

ini()

void

build()}}

}int

main()

希望哪位dalao看出錯誤指教。

BZOJ 3144 網路流最小割 解題報告

3144 hnoi2013 切糕 第一行是三個正整數p,q,r,表示切糕的長p 寬q 高r。第二行有乙個非負整數d,表示光滑性要求。接下來是r個p行q列的矩陣,第z個 矩陣的第x行第y列是v x,y,z 1 x p,1 y q,1 z r 100 的資料滿足p,q,r 40,0 d r,且給出的所有...

bzoj3894 網路流 最小割 文理分科

description 文理分科是一件很糾結的事情!雖然看到這個題目的人肯定都沒有糾 結過 小p所在的班級要進行文理分科。他的班級可以用乙個n m的矩陣進行 描述,每個格仔代表乙個同學的座位。每位同學必須從文科和理科中選擇 一科。同學們在選擇科目的時候會獲得乙個滿意值。滿意值按如下的方式 得到 1 ...

bzoj2768 網路流 最小割 冠軍調查

description input 第一行兩個整數n和m,其中n 2 n 300 表示參與者的總數,m 0 m n n 1 2 表示朋友的總對數。第二行n個整數,要麼是0要麼是1。如果第i個整數的值是0的話,表示第i個人心裡認為切爾西將與冠軍無緣,如果是1的話,表示他心裡認為切爾西必將奪魁。下面m行...