设为首页 加入收藏

TOP

hdu 4940 无源汇有上下界最大流
2015-07-20 17:50:28 来源: 作者: 【 】 浏览:2
Tags:hdu 4940 上下 最大
/*
\
题意:给出一个有向强连通图,每条边有两个值分别是破坏该边的代价和把该边建成无向边的代价(建立无向边的前提是删除该边)问是否存在一个集合S,和一个集合的补集T,破坏所有S集合到T集合的边代价和是X,然后修复T到S的边为无向边代价和是Y,满足Y
  
   vc3Bhbj4KIMjnufu05tTav8nQ0MH3ICDEx8O0y7XD97bU09rIztLitcQgUyC8r7rPwfez9rXEv8+2qLXI09ogwffI67XEo6wgwfez9rXEvMbL47XEIFggv8+2qNCh09q1yNPa1eK49sH3wb+jqFjKx8/CvefWrrrNo6mjrCC8xsvjs/bAtLXEWSCjqMnPvefWrrrNo6m/z7aotPPT2rXI09og1eK49sH3wb8gIL/PtqjC+tfjWDw9WaGjCiovCiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlPHN0cmluZy5oPgojaW5jbHVkZTxxdWV1ZT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBOIDMwMAojZGVmaW5lIGluZiAweDNmZmZmZmZmCnN0cnVjdCBub2RlIHsKICAgaW50IHUsdix3LG5leHQ7Cn1iaWFuW04qTiozXTsKaW50IGhlYWRbTl0seW9uZyxkaXNbTl0sd29ya1tOXTsKdm9pZCBpbml0KCl7Cnlvbmc9MDsKbWVtc2V0KGhlYWQsLTEsc2l6ZW9mKGhlYWQpKTsKfQp2b2lkIGFkZGJpYW4oaW50IHUsaW50IHYsaW50IHcpIHsKYmlhblt5b25nXS51PXU7CmJpYW5beW9uZ10udj12OwpiaWFuW3lvbmddLnc9dzsKYmlhblt5b25nXS5uZXh0PWhlYWRbdV07CmhlYWRbdV09eW9uZysrOwp9CnZvaWQgYWRkKGludCB1LGludCB2LGludCB3KSB7CmFkZGJpYW4odSx2LHcpOwphZGRiaWFuKHYsdSwwKTsKfQppbnQgbWluKGludCBhLGludCBiKQp7CiAgICByZXR1cm4gYTxiP2E6YjsKfQppbnQgYmZzKGludCBzLGludCB0KQp7CiAgICBtZW1zZXQoZGlzLC0xLHNpemVvZihkaXMpKTsKICAgIHF1ZXVlPGludD5xOwogICAgcS5wdXNoKHMpOwogICAgZGlzW3NdPTA7CiAgICB3aGlsZSghcS5lbXB0eSgpKQogICAgewogICAgICAgIGludCB1PXEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGZvcihpbnQgaT1oZWFkW3VdO2khPS0xO2k9YmlhbltpXS5uZXh0KQogICAgICAgIHsKICAgICAgICAgICAgaW50IHY9YmlhbltpXS52OwogICAgICAgICAgICBpZihiaWFuW2ldLncmYW1wOyZhbXA7ZGlzW3ZdPT0tMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZGlzW3ZdPWRpc1t1XSsxOwogICAgICAgICAgICAgICAgcS5wdXNoKHYpOwogICAgICAgICAgICAgICAgaWYodj09dCkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9CmludCBkZnMoaW50ICBzLGludCBsaW1pdCxpbnQgdCkKewogICAgaWYocz09dClyZXR1cm4gbGltaXQ7CiAgICBmb3IoaW50ICZhbXA7aT13b3JrW3NdO2khPS0xO2k9YmlhbltpXS5uZXh0KQogICAgewogICAgICAgIGludCB2PWJpYW5baV0udjsKICAgICAgICBpZihiaWFuW2ldLncmYW1wOyZhbXA7ZGlzW3ZdPT1kaXNbc10rMSkKICAgICAgICB7CiAgICAgICAgICAgIGludCB0dD1kZnModixtaW4obGltaXQsYmlhbltpXS53KSx0KTsKICAgICAgICAgICAgaWYodHQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGJpYW5baV0udy09dHQ7CiAgICAgICAgICAgICAgICBiaWFuW2leMV0udys9dHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gdHQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQppbnQgZGluaWMoaW50IHMsaW50IHQpCnsKICAgIGludCBhbnM9MDsKICAgIHdoaWxlKGJmcyhzLHQpKQogICAgewogICAgICAgIG1lbWNweSh3b3JrLGhlYWQsc2l6ZW9mKGhlYWQpKTsKICAgICAgICB3aGlsZShpbnQgdHQ9ZGZzKHMsaW5mLHQpKQogICAgICAgICAgICBhbnMrPXR0OwogICAgfQogICAgcmV0dXJuIGFuczsKfQppbnQgbWFpbigpewogICAgICAgIGludCBzdW0sYSxiLGMsVCxkLGFucyxpLGs9MCxuLG0sdCxTLHdbTl07CiAgICAgICAgc2NhbmYo"%d",&t);
        while(t--) {
                init();
            scanf("%d%d",&n,&m);
        S=0;T=n+1;
        memset(w,0,sizeof(w));
            for(i=1;i<=m;i++) {
                scanf("%d%d%d%d",&a,&b,&c,&d);
                add(a,b,d);
               w[b]+=c;
               w[a]-=c;
            }
            sum=0;
            for(i=1;i<=n;i++) {
                if(w[i]>0) {
                    sum+=w[i];
                    add(S,i,w[i]);
                }
                if(w[i]<0)
                    add(i,T,-w[i]);
            }
            ans=dinic(S,T);
            if(sum==ans)
                printf("Case #%d: happy\n",++k);
            else
                printf("Case #%d: unhappy\n",++k);
        }

return 0;
}

  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇LeetCode之逆波兰式求解 下一篇POJ 3169 Layout (差分约束系统)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Sphinx : 高性能SQL (2025-12-24 10:18:11)
·Pandas 性能优化 - (2025-12-24 10:18:08)
·MySQL 索引 - 菜鸟教 (2025-12-24 10:18:06)
·Shell 基本运算符 - (2025-12-24 09:52:56)
·Shell 函数 | 菜鸟教 (2025-12-24 09:52:54)