題目戳我
\(\text\)
顯然思路,把所有羊看成乙個源點,所有狼看成乙個匯點,格仔之間連容量為\(1\)的邊,直接跑最小割。
技巧:這題收穫:注意到無限邊在最小割中特殊的意義。
#includeusing namespace std;
#define int long long
const int maxn=5e5+10;
const int inf=1e15;
int n,m,dep[maxn],cur[maxn],head[maxn],tot=1,s,t;
struct edgee[maxn];
inline void add(int x,int y,int w)
bool bfs(int s,int t)
} }return false;
}int dfs(int s,int flow,int t)
} return flow-rest;
}int dinic(int s,int t)
inline int num(int x,int y)
signed main()
} for(int i=1;i<=n;++i)
} printf("%lld\n",dinic(s,t));
return 0;
}
ZJOI2009 狼和羊的故事
點此看題 考查網路流的建圖,要把羊和狼分割開來,很容易想到最小割問題,下面講一下建圖的方法 然後我們的圖就建出來了,這時候跑最大流就是答案。include include include include define inf 0x3f3f3f3f const int maxn 10005 using...
ZJOI2009 狼和羊的故事
solution 考慮 1 和 2 相鄰是必須要長度為 1 的籬笆,所以只需考慮 1,2 和 0 之間要不要放籬笆,用 s 連向所有的 1 所有的 2 連向 t 現在問題是要使 s 與 t 不連通,這不是經典的最小割問題嗎?code include include includeusing name...
ZJOI2009狼和羊的故事 dinic網路流
題意就是任意兩個1和2都不能有路徑相連通。做法是最小割,但是暴力增廣會t4個點,而dinic沒記cur陣列會t2個點,開了以後速度飛快。include include include includeusing namespace std const int maxn 105,maxn maxn ma...