题目

题解:与hdu6214基本相同 传送门

题解:

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100010;//点数的最大值
const int MAXM = 400010;//边数的最大值
const int INF = 0x3f3f3f3f;
#define ll long long
struct Edge
{int to,next;ll cap,flow;
} edge[MAXM]; //注意是MAXM
int tol;
int head[MAXN];
int gap[MAXN],dep[MAXN],pre[MAXN],cur[MAXN];
void init()
{tol = 0;memset(head,-1,sizeof(head));
}
//加边,单向图三个参数,双向图四个参数
void addedge(int u,int v,ll w,int rw=0)
{edge[tol].to = v;edge[tol].cap = w;edge[tol].next = head[u];edge[tol].flow = 0;head[u] = tol++;edge[tol].to = u;edge[tol].cap = rw;edge[tol].next = head[v];edge[tol].flow = 0;head[v]=tol++;
}
//输入参数:起点、终点、点的总数
//点的编号没有影响,只要输入点的总数
ll sap(int start,int end,int N)
{memset(gap,0,sizeof(gap));memset(dep,0,sizeof(dep));memcpy(cur,head,sizeof(head));int u = start;pre[u] = -1;gap[0] = N;ll ans = 0;while(dep[start] < N){if(u == end){int Min = INF;for(int i = pre[u]; i != -1; i = pre[edge[i^1].to])if(Min > edge[i].cap - edge[i].flow)Min = edge[i].cap - edge[i].flow;for(int i = pre[u]; i != -1; i = pre[edge[i^1].to]){edge[i].flow += Min;edge[i^1].flow -= Min;}u = start;ans += Min;continue;}bool flag = false;int v;for(int i = cur[u]; i != -1; i = edge[i].next){v = edge[i].to;if(edge[i].cap - edge[i].flow && dep[v]+1 == dep[u]){flag = true;cur[u] = pre[v] = i;break;}}if(flag){u = v;continue;}int Min = N;for(int i = head[u]; i != -1; i = edge[i].next)if(edge[i].cap - edge[i].flow && dep[edge[i].to] < Min){Min = dep[edge[i].to];cur[u] = i;}gap[dep[u]]--;if(!gap[dep[u]])return ans;dep[u] = Min+1;gap[dep[u]]++;if(u != start) u = edge[pre[u]^1].to;}return ans;
}int main()
{int t,n,m,vs,vt,flag,ca=1;;scanf("%d",&t);while (t--){init();scanf("%d %d",&n,&m);//vs=0,vt=1;for(int i=0;i<m;i++){int u,v,w;scanf("%d %d %d %d",&u,&v,&w,&flag);addedge(u,v,(ll)w*MAXM+1);if(flag)addedge(v,u,(ll)w*MAXM+1);}ll ans = sap(0,n-1,n)%MAXM;printf("Case %d: %lld\n",ca++,ans);}return 0;
}

hdu3987(最小割最小边数)相关推荐

  1. hdu 3987(最小割的边数)

    题意:给出一张有n个点的图,有的边又向,有的边无向,现在要你破坏一些路,使得从点0无法到达点n-1.破坏每条路都有一个代价.求在代价最小的前提下,最少需要破坏多少条道路.(就是说求在最小割的前提下,最 ...

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

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

  3. HDU - 6214 Smallest Minimum Cut(最小割最少边数)

    题目链接:点击查看 题目大意:给出一张由n个点以及m条边组成的有向图,现在要求出最少割掉几条边使得整张图不连通并且割掉边的权值最小 题目分析:题目的意思也就是要求最小割的最少边数,这里有两个方法: 先 ...

  4. hdu 3657 最大点权独立集变形(方格取数的变形最小割,对于最小割建图很好的题)...

    转载:http://blog.csdn.net/cold__v__moon/article/details/7924269 /* 这道题和方格取数2相似,是在方格取数2的基础上的变形.方格取数2解法: ...

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

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

  6. 【HDU】4859海岸线-最小割最大独立点权变形

    hdu4859 题解 在矩形外围一圈D,将所有相邻格子连边,海岸线相当于相连的两个格子种类不同的边的数量. 如果是最小化边数就是很经典的最小割模板了,考虑将最大化问题转成最小化相连的两个格子种类相同的 ...

  7. 模板 - 最小割(常见最小割题型技巧总结)

    整理的算法模板合集: ACM模板 目录 一.集合划分模型 二.点边转化 三.最小割的可行边与必须边 四.二分图的可行边和必须边 五.平面图最小割 六.最小割的一些小技巧 1.记录划分方案 2.求割边数 ...

  8. 【网络流-最小割】USA4.4——追查坏牛奶Pollutant Control

    前言 你说你是个网络流的题,就算了嘛,还要输出方案,啧啧啧... 题目 题目描述 你第一天接手三鹿牛奶公司就发生了一件倒霉的事情:公司不小心发送了一批有三聚氰胺的牛奶.很不幸,你发现这件事的时候,有三 ...

  9. [国家集训队]happiness 最小割 BZOJ 2127

    题目描述 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文 ...

  10. POJ - 2914 Minimum Cut(全局最小割-Stoer_Wagner)

    题目链接:点击查看 题目大意:给出一张无向图,要求将其分为两个集合,使得最小割最小 题目分析:算法学习自:https://blog.csdn.net/dingdi3021/article/detail ...

最新文章

  1. 2018-2019 ACM-ICPC, Asia Nanjing Regional Contest
  2. python使用opencv_Python使用OpenCV进行标定
  3. Python Django单表查询之日期查询(大于小于范围查询)
  4. 数组中三个只出现一次的数字
  5. Exchange2003/2010共存模式环境迁移
  6. curl header设置参数
  7. Infosys:印度信息技术巨头公司
  8. 简练网软考知识点整理-项目风险应对策略
  9. hdu 3966 树链剖分
  10. office word安装mathtype报错,找不到mathpage.WLL文件
  11. 【教程】Spire.PDF教程:C# 如何提取 PDF 文档中的文本和图片
  12. linux篇之安装MySQL及远程连接
  13. 麦克劳林级数与麦克劳林公式(泰勒公式)
  14. JAVA范例 - Applet小应用程序
  15. linux(CentOS7)下实现集群主机分类免密登录脚本--类跳板机
  16. 7-3 计算年龄 (10 分)
  17. Android必学之AsyncTask,多线程AsyncTask,详细AsyncTask使用教程
  18. 软件开发生命周期各阶段的任务
  19. html需要编译执行吗,Javascript代码需要编译以后才能执行。
  20. 输入一行字符,分别统计出其数字、大写字母、小写字母和其他字符的个数。

热门文章

  1. 愿世间所有美好都恰逢其时
  2. 手机距离传感器测试软件,距离传感器有什么用_手机距离传感器坏了
  3. laydate使用官方使用方法
  4. 用php怎么输出一首诗,如何用一首诗总结你的2018年?
  5. SpringSecurity实战(七)-对接第三方登陆-流程分析
  6. 编程还是不要用百度翻译,这里有一款更符合编程的翻译工具
  7. 【Python爬虫】:爬取58同城二手房的所有房产标题
  8. kwgt 歌词_跪求完整版伪物语OP2白金迪斯科的中文,日文,罗马音三合一的歌词!!!...
  9. Python图像处理一:图像的读取、显示与存储
  10. C#开启路由器upnp功能