标签:Control 问是 int 最小 USACO4.4 ans 边数 就是
题目大意:两个问题,第一问是求最小割,第二问是求最小割的边数。
思路:第一问咱应该都会,第二问咋弄呢,求出最小割的时候怎样才能求出最小割的边数呢?
果断点开题解...我们可以利用一个数学性质,就是(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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。