题目链接


\(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. Win#password;;processon #clone;;disassemble;;source find

    1.密码学思维导图 源地址:https://www.processon.com/view/5a61d825e4b0c090524f5b8b 在这之前给大家分享 如何在 processon上搜索公开克隆 ...

  2. 安装cx_Oracle 6

    首先声明,本文是在Linux 环境下进行安装.不涉及Windows 版安装. 一. 了解cx_Oracle 安装要求 要python 通过cx_Oracle 6 操作Oracle 数据库,以下几个条件 ...

  3. DoNetZip类库解压和压缩文件

    using Ionic.Zip; public class ZipHelper { public static void ZipSingleFile(string zipPath) { try { u ...

  4. 如何获取jar包的在执行机上面的路径

    背景: 最近在项目中遇到一个小问题, 几行代码就能解决了 String path = this.getClass().getProtectionDomain().getCodeSource().get ...

  5. 51 nod 1212 无向图最小生成树(Kruckal算法/Prime算法图解)

    1212 无向图最小生成树 N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树. 收起 输入 第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量.(2 <= N < ...

  6. SQL得到任意一个存储过程的参数列表sp_procedure_params_rowset

    SQL得到任意一个存储过程的参数列表sp_procedure_params_rowsetexec sp_procedure_params_rowset 'up_rpt营业收入汇总表' PROCEDUR ...

  7. [转] js中的事件委托或是事件代理详解

    起因: 1.这是前端面试的经典题型,要去找工作的小伙伴看看还是有帮助的: 2.其实我一直都没弄明白,写这个一是为了备忘,二是给其他的知其然不知其所以然的小伙伴们以参考: 概述: 那什么叫事件委托呢?它 ...

  8. 转:ubuntu-E:Encountered a section with no Package: header的解决办法

    http://blog.csdn.net/hs794502825/article/details/7835902 blog.csdn.net/lixiang0522/article/details/7 ...

  9. ERROR 000732:Output Geodatabase:Dataset Database Connections\Connection to localhost.sde\SDE.Dataset does not exist or is not supported

    ArcCatalog 10中向SDE 数据集导入要素类时,出错:ERROR 000732:Output Geodatabase:Dataset Database Connections\Connect ...

  10. SpringBoot Controller接收参数的几种常用方

    第一类:请求路径参数 1.@PathVariable 获取路径参数.即url/{id}这种形式. 2.@RequestParam 获取查询参数.即url?name=这种形式 例子 GET http:/ ...