题目链接


\(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. python网络爬虫笔记(三)

    一.切片和迭代 1.列表生成式 2.生成器的generate,但是generate保存的是算法,所以可以迭代计算,没有必要,每次调用generate 二.iteration 循环 1.凡是作用于for ...

  2. C++ GetUserName()

    关于函数“GetUserName()”,参见:https://msdn.microsoft.com/en-us/library/windows/desktop/ms724432(v=vs.85).as ...

  3. PXE+HTTP+TFTP+Kickstart实现无人值守部署centos6.10

    在联网的状态下安装所需软件: Shell> yum install dhcp httpd tftp-server xinetd syslinux system-config-kickstart ...

  4. 出现xml错误的时候都是配置文件的名字没有改造成的

    The error may exist in com/bjpowernode/dao/PlayerDao.xml

  5. Lua中assert( )函数的使用

    当Lua遇到不期望的情况时就会抛出错误,比如:两个非数字进行相加:调用一个非函数的变量:访问表中不存在的值等.你也可以通过调用error函数显示的抛出错误,error的参数是要抛出的错误信息. ass ...

  6. Python os.walk() 方法遍历文件目录

    概述 os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下. os.walk() 方法是一个简单易用的文件.目录遍历器,可以帮助我们高效的处理文件.目录方面的事情. 在Un ...

  7. C#使用Emit构造拦截器动态代理类

    在AOP编程概念介绍中,常见的示例为拦截对象,并在对象的某方法执行前和执行后分别记录日志. 而最常用的拦截方式是使用动态代理类,用其封装一个日志拦截器,当方法被执行时进行日志记录. 日志拦截器类 1 ...

  8. rimraf node_modules 快速删除

     npm install -g rimraf   // 先进行全局安装 rimraf node_modules   // 进行删除   -------------------------------- ...

  9. weblogic弱密码检测

    http://www.secbox.cn/hacker/tools/6252.html http://60.12.168.73:8088/console/login/LoginForm.jsp htt ...

  10. zabbix_agent YUM源配置

    wget http://repo.zabbix.com/zabbix/3.0/rhel/5/x86_64/zabbix-release-3.0-1.el5.noarch.rpm rpm -ivh za ...