题目:

http://acm.hdu.edu.cn/showproblem.php?pid=3987

题意:

给一个网络,边有有向边和无向边两种,挑选一些边破坏,使得从0无法到达n-1,每条边都有一个破环的成本,求在成本最低的情况下需要破坏的最少边数

思路:

明显最小成本就是最小割,求边数的话,扩大边权然后取余即可

#include <bits/stdc++.h>using namespace std;typedef long long ll;
const int N = 1000 + 10;
const ll INF = 0x3f3f3f3f3f3f3f3f;
struct edge
{int to, next;ll cap;
}g[N*N*2];
int level[N], cur[N], pre[N], gap[N];
int cnt, head[N];
int nv;
void init()
{cnt = 0;memset(head, -1, sizeof head);
}
void add_edge(int v, int u, ll cap)
{g[cnt].to = u, g[cnt].cap = cap, g[cnt].next = head[v], head[v] = cnt++;g[cnt].to = v, g[cnt].cap = 0, g[cnt].next = head[u], head[u] = cnt++;
}
ll sap(int s, int t)
{memset(level, 0, sizeof level);memset(gap, 0, sizeof gap);memcpy(cur, head, sizeof head);gap[0] = nv;int v = pre[s] = s;ll flow = 0, aug = INF;while(level[s] < nv){bool flag = false;for(int &i = cur[v]; i != -1; i = g[i].next){int u = g[i].to;if(g[i].cap > 0 && level[v] == level[u] + 1){flag = true;pre[u] = v;v = u;aug = min(aug, g[i].cap);if(v == t){flow += aug;while(v != s){v = pre[v];g[cur[v]].cap -= aug;g[cur[v]^1].cap += aug;}aug = INF;}break;}}if(flag) continue;int minlevel = nv;for(int i = head[v]; i != -1; i = g[i].next){int u = g[i].to;if(g[i].cap > 0 && level[u] < minlevel)minlevel = level[u], cur[v] = i;}if(--gap[level[v]] == 0) break;level[v] = minlevel + 1;gap[level[v]]++;v = pre[v];}return flow;
}
int main()
{int t, n, m, cas = 0;scanf("%d", &t);while(t--){init();scanf("%d%d", &n, &m);int a, b, c, d;for(int i = 1; i <= m; i++){scanf("%d%d%d%d", &a, &b, &c, &d);a++, b++;add_edge(a, b, 1LL*c*(m+1) + 1);if(d) add_edge(b, a, 1LL*c*(m+1) + 1);//边权扩大(m+1)倍再+1}int ss = 1, tt = n;nv = n;printf("Case %d: %lld\n", ++cas, sap(ss, tt) % (m+1));}return 0;
}

hdu3987 Harry Potter and the Forbidden Forest 最小割边数相关推荐

  1. HDU - 3987 Harry Potter and the Forbidden Forest(最小割最少边数)

    题目链接:点击查看 题目大意:给出一个由n个点和m条边组成的图,求最小割的最小边数 题目分析:和hdu6214大同小异,都是模板题,这个题目用第一种方法,也就是先跑一遍最大流,然后修改一下残余网络上的 ...

  2. hdu3987 最小割边数

    题意:       是让你求最小割之后问最小割的最少边数是多少,因为最小割不是唯一的,所以存在最小边数的问法. 思路:       两个方法,一个是先一遍最大流,然后把割边全都改成流量1,其他的全都改 ...

  3. 【最小割】HDU 3987 Harry Potter and the Forbidden Forest

    得到的最小割得到sum sum/E 为 最小割 sum%E 为最小割的边数 #include <stdio.h> #include <string.h> #include &l ...

  4. Forbidden Forest 错落森林

    乔治温斯顿10首经典钢琴曲交响乐版-Forbidden Forest 一贯以来,许多古典音乐改编为新世纪音乐的专辑,除了保留原有的色彩和高贵内 涵,更拥有了灵气和动感.而现在让我们去感受一种用交响音乐 ...

  5. cstring只获取到第一个数_一文讲透 Dubbo 负载均衡之最小活跃数算法

    (给ImportNew加星标,提高Java技能) 作者:why技术(本文来自作者投稿) 本文是对于Dubbo负载均衡策略之一的最小活跃数算法的详细分析.文中所示源码,没有特别标注的地方均为2.6.0版 ...

  6. (C++)输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求用3个函数实现,分别为输入10个数、进行处理、输出10个数。要求使用指针的方法进行处理。

    #include<cstdio> //输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.要求用3个函数实现,分别为输入10个数.进行处理.输出10个数.要求使用指针 ...

  7. ACMNO.37 C语言-数字交换 输入10个整数,将其中最小的数与第一个数对换,然后把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。

    题目描述 输入10个整数,将其中最小的数与第一个数对换,然后把最大的数与最后一个数对换. 写三个函数: ①输入10个数:②进行处理:③输出10个数. 输入 10个整数 输出 整理后的十个数,每个数后跟 ...

  8. LeetCode 31. Next Permutation-- Python 解法--数学题--比当前数大的最小的数

    LeetCode 31. Next Permutation-- Python 解法–数学题–比当前数大的最小的数 此文首发于我的个人博客:LeetCode 31. Next Permutation-- ...

  9. 【剑指offer-Java版】33把数组排成最小的数

    把数组排成最小的数 难点在于比较规则的确定以及比较规则的正确性证明 比如:仅仅是局部的两个数字的顺序较小,如何保证整个数组按此规则进行排序后达到全局的较小 书中关于这一点的证明直接用的反证法,忘的差不 ...

  10. 33:把数组排成最小的数

    /*** 面试题33:把数组排成最小的数* 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.* 例如输入数组{3,32,321},则打印出这三个数字能排成的 ...

最新文章

  1. Maven学习——安装与修改Maven的本地仓库路径
  2. open Session In View和过滤器配置
  3. 成功解决 修改pip的默认安装packages包的路径
  4. VirtualBox 安装 Linux时 报错This kernel requires an X86-64 CPU,but only detected an i686 CPU错误的解决办法
  5. Android自定义View——可以设置最大宽高的FrameLayout
  6. 全民熬夜的时代,如何做到早睡?
  7. php原生sql语法,thinkphp执行原生SQL语句的实现方法
  8. [转帖]Docker 清理占用的磁盘空间
  9. oem监控mysql_OEM12c 安装配置MySQL Plug-in用来监控MySQL
  10. 中文乱码在java中URLEncoder.encode方法要调用两次解决
  11. 浙大计算机科学与技术FPGA,Computer Science 计算机科学与技术系 重要国际学术会议...
  12. linux服务器安装杀毒软件
  13. uniApp 生命周期【应用生命周期 和 页面生命周期】
  14. android windows安卓版,安卓模拟器 WindowsAndroid
  15. Python 列表推导式的实用小技巧
  16. OV7725摄像头的彩色图像采集原理与液晶显示《一》
  17. “秘闻披露”:比尔·盖茨给QQ老总的一封信
  18. JAVA面试算法小记
  19. canvas绘图 echarts 基本使用
  20. python 在线教程-python教程在线

热门文章

  1. 江苏省2021年高考成绩查询入口,江苏省教育考试院2021年江苏高考成绩查询时间及系统入口【预计6月24日起查分】...
  2. vue防止用户恶意点击按钮
  3. 个人网站6-深度定制网站样式和添加Google广告
  4. 如何将html的按钮做成圆角,HTML 圆角按钮的实现备忘
  5. luov之IT管理制度
  6. windows系统上安装与使用Android NDK r5
  7. python excel 复制行_通过python复制excel行
  8. 了结MySQL information_schema
  9. 数据库表结构设计,什么是概念模型、逻辑模型、物理模型
  10. 研究遭质疑!Jeff Dean回应:我们本就不是为得到新SOTA,成本计算也搞错了...