ZJOI2009 狼和羊的故事

2022-09-19 13:03:09 字數 799 閱讀 3038

\(solution\)

考慮\(1\)和\(2\)相鄰是必須要長度為\(1\)的籬笆,所以只需考慮\(1,2\)和\(0\)之間要不要放籬笆,用\(s\)連向所有的\(1\),所有的\(2\)連向\(t\),現在問題是要使\(s\)與\(t\)不連通,這不是經典的最小割問題嗎?

\(code\)

#include#include#includeusing namespace std;

const int inf = 2147483647;

int h[10005],cur[10005],n,m,dep[10005],q[10005],tot = 1,s,t,ans,a[105][105];

struct edgee[2000005];

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

,h[x] = tot;

e[++tot] = edge,h[y] = tot;

}int bfs()

} return dep[t];

}int dinic(int u,int mn,int fa)

return flow;

}void work(int x,int y,int x1,int y1)

int main()

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

for (int j = 1; j <= m; j++)

while (bfs()) ans += dinic(s,inf,s);

printf("%d",ans);

}

ZJOI2009 狼和羊的故事

點此看題 考查網路流的建圖,要把羊和狼分割開來,很容易想到最小割問題,下面講一下建圖的方法 然後我們的圖就建出來了,這時候跑最大流就是答案。include include include include define inf 0x3f3f3f3f const int maxn 10005 using...

題解 ZJOI2009 狼和羊的故事

題目戳我 text 顯然思路,把所有羊看成乙個源點,所有狼看成乙個匯點,格仔之間連容量為 1 的邊,直接跑最小割。技巧 這題收穫 注意到無限邊在最小割中特殊的意義。includeusing namespace std define int long long const int maxn 5e5 1...

ZJOI2009狼和羊的故事 dinic網路流

題意就是任意兩個1和2都不能有路徑相連通。做法是最小割,但是暴力增廣會t4個點,而dinic沒記cur陣列會t2個點,開了以後速度飛快。include include include includeusing namespace std const int maxn 105,maxn maxn ma...