P1344 [USACO4.4]追查坏牛奶Pollutant Control(最小割+最小割的边数)
作者:互联网
题目大意:两个问题,第一问是求最小割,第二问是求最小割的边数。
思路:第一问咱应该都会,第二问咋弄呢,求出最小割的时候怎样才能求出最小割的边数呢?
果断点开题解...我们可以利用一个数学性质,就是(x*p+y)/p,当p大于y的时候,结果就是x,然后
我们把y就设置为1,表示一条边,p设置为(m*2+1),x就是原本的边权,最后用上面公式的结果连边后得到最小割ans,
ans/(m*2+1)就是结果的最小割,然后ans%(m*2+1)就是最小割的边数,Orz....
部分代码:
int n, m; int main() { //freopen("test.txt", "r", stdin); scanf("%d%d", &n, &m); for (int i = 1; i <= m; i++) { int a, b;ll c; scanf("%d%d%lld", &a, &b, &c); add(a, b, c*(m*2+1)+1);//注意ll,不然要炸 add(b, a, 0); } s = 1, d = n; ll ans = dinic(); printf("%lld %lld", ans / (m * 2 + 1), ans % (m * 2 + 1)); return 0; }
标签:Control,问是,int,最小,USACO4.4,ans,边数,就是 来源: https://www.cnblogs.com/MYMYACMer/p/14630489.html