Description

link

题意概述:给一张图,每条边有边权,求让点 \(1\) 和点 \(n\) 不连通的“最小破坏边权和” 和 “在此基础上的最小破坏边数”

边数 \(\leq 1000\) ,点数 \(\leq 32\)

Solution

\[Begin
\]

其实看出来这个可以用最小割做挺显然的

然后第二问的做法就有点点技巧了

我们把图中的每一条边的边权 \(w_i\) 转化成 \(a \times w_i+1\)

其中\(a\) > \(1000\)

然后我们跑最大流,求得的 \(ans/a\) 就是最小割,然后 \(ans \% a\) 就是边数

这里特别好理解的

\[Finish
\]

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
namespace yspm{
inline int read()
{
int res=0,f=1; char k;
while(!isdigit(k=getchar())) if(k=='-') f=-1;
while(isdigit(k)) res=res*10+k-'0',k=getchar();
return res*f;
}
const int N=1e4+10,M=1e5+10;
struct node{int nxt,to,lim;}e[M<<1];
int head[N],dep[N],ans,s,t,cnt=1,n,m,a=1002;
inline void add(int u,int v,int w)
{
e[++cnt].nxt=head[u],e[cnt].lim=w; e[cnt].to=v;
return head[u]=cnt,void();
}
queue<int>q;
inline bool bfs()
{
memset(dep,-1,sizeof(dep)); dep[s]=0;
while(q.size()) q.pop(); q.push(s);
while(!q.empty())
{
int fr=q.front(); q.pop();
for(int i=head[fr];i;i=e[i].nxt)
{
int tr=e[i].to;
if(dep[tr]==-1&&e[i].lim) dep[tr]=dep[fr]+1,q.push(tr);
}
}
return dep[t]!=-1;
}
inline int dfs(int now,int in)
{
if(now==t) return in; int out=0;
for(int i=head[now];i&&in;i=e[i].nxt)
{
int tr=e[i].to;
if(e[i].lim&&dep[tr]==dep[now]+1)
{
int res=dfs(tr,min(in,e[i].lim));
in-=res; out+=res; e[i].lim-=res;
e[i^1].lim+=res;
}
} if(!out) dep[now]=-1; return out;
}
signed main()
{
n=read(),m=read(); s=1,t=n;
for(int i=1,u,v,w;i<=m;++i)
{
u=read(); v=read(); w=read();
add(u,v,w*a+1); add(v,u,0);
}
while(bfs()) ans+=dfs(s,1e17);
printf("%lld %lld\n",ans/a,ans%a);
return 0;
}
}
signed main(){return yspm::main();}

没怎么压行,应该挺可读的

最新文章

  1. C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例
  2. [示例] Firemonkey 不规则按钮实做
  3. vpsmate安装
  4. Web性能测试基本指标
  5. 5.2---小数的二进制表示(CC150)
  6. bzoj1615 [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机
  7. 对开发中常见的内存泄露,GDI泄露进行检测
  8. Mycat中的核心概念
  9. 尝试在条件“$(_DeviceSdkVersion) >= 21”中对计算结果为“”而不是数字的“$(_DeviceSdkVersion)
  10. Win 10 下 android studio显示 Intel haxm无法安装,以及VT-X和hyper-x的冲突问题
  11. DevExpress控件GridControl中的布局详解 【转】
  12. Java动态代理之JDK实现和CGlib实现(简单易懂)
  13. git与eclipse集成之代码冲突与解决
  14. beautiful number 数位dp
  15. domReady
  16. 安卓开发之ScrollView
  17. js-数组方法push
  18. libevent源码剖析
  19. Java三方----&gt;Thumbnailator框架的使用
  20. js权威指南学习笔记(四)对象

热门文章

  1. ES6 之 Object 的方法总结
  2. Node.js 文件系统模块
  3. Docker 容器shell
  4. 【剑指Offer】面试题11. 旋转数组的最小数字
  5. 使用kali中的Metasploit通过windows7的永恒之蓝漏洞攻击并控制win7系统(9.27 第十三天)
  6. jquery 获取同级元素
  7. dll调用--出现运行时调用不协调
  8. Hibernate--(二)增删改查
  9. DAO三层架构及工厂模式
  10. vue-cli3.x 搭建项目目