其他分享
首页 > 其他分享> > P1344 [USACO4.4]追查坏牛奶Pollutant Control(最小割+最小割的边数)

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