题目链接


\(Description\)

给定\(n\)以及\(n\)个点任意两点之间的最大流,求一张无向图满足给定条件。

\(n\leq100\)。

\(Solution\)

有些类似最小割树

我们可以构造一棵树,只要让树上的边成为割边,非树边容量为\(0\)就可以了。

每次找到当前点集中流量最小的边,设其流量为\(c\),然后根据\(c\)将点集分成两个集合,满足两个集合之间的点对的最大流是\(c\),集合内部的点的最大流\(>c\)。对于集合内部继续递归做即可。

划分集合的时候也是可以先随便找一个点\(x\)划分到左集合,将\(flow[x][i]>c\)的点\(i\)分到左集合,其余的点分到右集合,再判断一下左右集合是否满足之间的最大流\(=c\)即可。注意右集合为空时也无解(\(x\dfrac{>c}{}u\dfrac{\ c\ }{}v\dfrac{>c}{}x\),这样显然不行)。

复杂度\(O(n^3)\)?

注意\(A[i]\)别写成\(i\)。。


//93MS	1316K
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#define gc() getchar()
typedef long long LL;
const int N=105; int A[N],tmp[2][N],f[N][N],W[N][N]; inline int read()
{
int now=0,f=1;register char c=gc();
for(;!isdigit(c);c=='-'&&(f=-1),c=gc());
for(;isdigit(c);now=now*10+c-48,c=gc());
return now*f;
}
bool DFS(int l,int r)
{
if(l==r) return 1;
int mn=1<<30,cnt[2]={0,1}; tmp[1][1]=A[l];
for(int i=l; i<=r; ++i)
for(int j=i+1; j<=r; ++j) mn=std::min(mn,f[A[i]][A[j]]);
for(int s=A[l],i=l+1,t; i<=r; ++i) t=f[s][A[i]]>mn, tmp[t][++cnt[t]]=A[i];
if(!cnt[0]) return 0;
for(int i=1; i<=cnt[0]; ++i)
for(int j=1; j<=cnt[1]; ++j)
if(f[tmp[0][i]][tmp[1][j]]!=mn) return 0;
for(int i=l,t=1; t<=cnt[0]; ++i) A[i]=tmp[0][t++];
for(int i=l+cnt[0],t=1; i<=r; ++i) A[i]=tmp[1][t++];
W[A[l]][A[r]]=mn, W[A[r]][A[l]]=mn;
return DFS(l,l+cnt[0]-1)&&DFS(l+cnt[0],r);
} int main()
{
int n;
while(~scanf("%d",&n))
{
memset(W,0,sizeof W);
for(int i=1; i<=n; ++i)
for(int j=1; j<=n; ++j) f[i][j]=read();
for(int i=1; i<=n; ++i) A[i]=i;
if(!DFS(1,n)) puts("NO");
else
{
puts("YES");
for(int i=1; i<=n; ++i)
for(int j=(W[i][i]=-1,1); j<=n; ++j) printf("%d%c",W[i][j]," \n"[j==n]);
}
} return 0;
}

HDU.4700.Flow(构造 最小割树)的更多相关文章

  1. 最小割树(Gomory-Hu Tree)求无向图最小割详解 附 BZOJ2229,BZOJ4519题解

    最小割树(Gomory-Hu Tree) 前置知识 Gomory-Hu Tree是用来解决无向图最小割的问题的,所以我们需要了解无向图最小割的定义 和有向图类似,无向图上两点(x,y)的割定义为一个边 ...

  2. CQOI2016 不同的最小割 (最小割树模板)(等价流树的Gusfield构造算法)

    题目 最小割树模板 算法详解及证明见: 2016年国家队候选队员论文 <浅谈无向图最小割问题的一些算法及应用--绍兴一中 王文涛> 3.2节 CODE #include <bits/ ...

  3. 【BZOJ-2229】最小割 最小割树(最大流+分治)

    2229: [Zjoi2011]最小割 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1565  Solved: 560[Submit][Status ...

  4. 【BZOJ2229】[ZJOI2011]最小割(网络流,最小割树)

    [BZOJ2229][ZJOI2011]最小割(网络流,最小割树) 题面 BZOJ 洛谷 题解 戳这里 那么实现过程就是任选两点跑最小割更新答案,然后把点集划分为和\(S\)联通以及与\(T\)联通. ...

  5. 洛谷.4897.[模板]最小割树(Dinic)

    题目链接 最小割树模板.具体见:https://www.cnblogs.com/SovietPower/p/9734013.html. ISAP不知为啥T成0分了.. Dinic: //1566ms ...

  6. LoibreOJ 2042. 「CQOI2016」不同的最小割 最小割树 Gomory-Hu tree

    2042. 「CQOI2016」不同的最小割 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 ...

  7. 最小割(zjoi2011,bzoj2229)(最小割树)

    小白在图论课上学到了一个新的概念--最小割,下课后小白在笔记本上写下了如下这段话: "对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点\(s,t\)不在同一个部分中,则称 ...

  8. 不同的最小割(cqoi2016,bzoj4519)(最小割树)

    学过图论的同学都知道最小割的概念:对于一个图,某个对图中结点的划分将图中所有结点分成 两个部分,如果结点\(s,t\)不在同一个部分中,则称这个划分是关于\(s,t\)的割.对于带权图来说,将 所有顶 ...

  9. [模板]最小割树(Gomory-Hu Tree)(luogu4897)

    给定一个\(n\)个点\(m\)条边的无向连通图,多次询问两点之间的最小割 两点间的最小割是这样定义的:原图的每条边有一个割断它的代价,你需要用最小的代价使得这两个点不连通 Input 第一行两个数\ ...

随机推荐

  1. poj2116 模拟题

    不知道错在哪里 /* 给定两个斐波那契表示数,要求用标准化表达方式表达 然后将这两个数加起来,和也用标准化方式表达 思路:显然要将这两个数先用十进制表示,和也用十进制表示 然后在转化成二进制即可 1 ...

  2. Git使用四:查看工作状态和历史提交

    查看当前的工作状态:git status On branch master:现在位于master分支里面nothing to commit, working tree clean:没有需要提交的文件, ...

  3. 纯CSS3超酷3D旋转立方体动画特效

    简要教程 这是一款神奇的纯 CSS3 立方体动画特效插件.使用CSS3来制作动画效果已经成为WEB前端开发的一种时尚,从简单的颜色和尺寸动画,到复杂的旋转.翻转动画, CSS3 展现了它无穷的魅力.使 ...

  4. spring cloud config--client

    概述 之前我们简单的搭建了一个单点的config-server服务,实现配置文件的统一管理,本次文章将实现config-client是如何从config-server中获取到统一配置文件信息的 1.创 ...

  5. php归档格式:phar文件详解(创建、使用、解包还原提取)

    转载一篇,突然遇到一个冷知识,phar的东东,貌似和jar.war是一种鬼. 重点使用一下下面这个东东,就能解包出来东东了. $phar = new Phar('lib/yunke.phar', 0) ...

  6. Visual Studio上编译ncnn

    prerequisite 是为了在PC上熟悉ncnn的基本代码,所以用Visual Studio来配置的. 期间用过VS2013(update5)/VS2015/VS2017,反正都是基于CMake生 ...

  7. SpringBank 开发日志 使用maven构建dubbo服务的可执行jar包

    写这篇日志的时候,我已经完成了这个目标,并且中间经历了一次面试.现在回过头看,已经觉得印象不那么深刻了,果然还是一边思考,一边记录这样最好.但我还是严格要求自己,从新做了梳理,对相关配置进行了整理和说 ...

  8. 关于64位 MS SQL 导入导出 Oracle 引发 ORA-06413 的解决方法

    如果在X64系统下我们想利用 MS SQL 的DTS导入导出 Oracle 数据,由 oracle 不支持路径中包含")",会引发 ORA-06413:连接未打开错误 解决的办法很 ...

  9. Note for "Some Remarks on Writing Mathematical Proofs"

    John M. Lee is a famous mathematician, who bears the reputation of writing the classical book " ...

  10. 【译】异步JavaScript的演变史:从回调到Promises再到Async/Await

    我最喜欢的网站之一是BerkshireHathaway.com--它简单,有效,并且自1997年推出以来一直正常运行.更值得注意的是,在过去的20年中,这个网站很有可能从未出现过错误.为什么?因为它都 ...