Link

注意到原图给的是一个无向连通图。

如果在原图中两点之间有一条无向边,那么这两点到\(1\)的距离之差不大于\(1\)。

这个命题的正确性是显然的,我们考虑它的逆命题:

给定每个点到\(1\)的距离(不大于\(n\)),并给定一些已有的边,满足已有的边的两端到\(1\)的距离之差不大于\(1\),那么一定存在一种方案满足该种情况。

因为题目给的是一个无向连通图,所以我们可以先构造一条最短路径递增的链,然后再把其它的点挂在上面即可。

那么现在就变成了距离限制模型,直接最小割即可。

#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
int read(){int x;scanf("%d",&x);return x;}
const int N=47,V=2007,E=150007,inf=1e9;
int n,s,t,tot=1,e[N][N],w[N],head[V],ver[E],next[E],edge[E],cur[V],dep[V];std::queue<int>q;
int sqr(int a){return a*a;}
void add(int u,int v,int w){ver[++tot]=v,next[tot]=head[u],edge[tot]=w,head[u]=tot,ver[++tot]=u,next[tot]=head[v],edge[tot]=0,head[v]=tot;}
int bfs()
{
memset(dep+1,0x3f,t<<2),memcpy(cur+1,head+1,t<<2),dep[s]=0,q.push(s);
for(int i,u,v;!q.empty();) for(u=q.front(),q.pop(),i=head[u];i;i=next[i]) if(dep[v=ver[i]]>inf&&edge[i]) dep[v]=dep[u]+1,q.push(v);
return dep[t]<inf;
}
int dfs(int u,int lim)
{
if(!lim||u==t) return lim;
int v,flow=0;
for(int&i=cur[u],f;i;i=next[i])
if(dep[v=ver[i]]==dep[u]+1&&(f=dfs(v,std::min(lim,edge[i]))))
{
flow+=f,lim-=f,edge[i]-=f,edge[i^1]+=f;
if(!lim) break;
}
return flow;
}
int dinic(){int ans=0;while(bfs()) ans+=dfs(s,inf);return ans;}
int solve()
{
s=n*n+1,t=s+1;
for(int i=1;i<=n;++i)
{
add(s,(i-1)*n+1,i==1? 0:inf),add(i*n,t,inf);
for(int j=1;j<n;++j) add((i-1)*n+j,(i-1)*n+j+1,i==1? inf:sqr(w[i]-j));
for(int j=1;j<=n;++j) if(e[i][j]) for(int k=1;k<n;++k) add((i-1)*n+k+1,(j-1)*n+k,inf);
}
return dinic();
}
class FoxAndCity
{
public:
int minimalCost(std::vector<std::string>g,std::vector<int>vec)
{
n=g.size();
for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) e[i][j]=g[i-1][j-1]=='Y';
for(int i=1;i<=n;++i) w[i]=vec[i-1];
return solve();
}
};

最新文章

  1. C++11 - 类型推导auto关键字
  2. 接着上一篇 《Is WPF dead》
  3. Kafka深入理解-2:Kafka的Log存储解析
  4. 在使用 AjaxFileUpload 上传文件时,在项目发布到 iis 后,图片不能预览
  5. Win8系统安装NET Framework 3.5的方法
  6. SQL中CONVERT()函数用法详解
  7. Linux C 编译错误总结
  8. [React] React Router: hashHistory vs browserHistory
  9. PHP本地域名解析教程
  10. Windows Phone 如果你把Pivot控件当成主页面,那么这篇文章你值得看。
  11. 【干货】Chrome插件(扩展)开发全攻略(不点进来看看你肯定后悔)
  12. phpstorm快捷键记录
  13. [.Net Core] 在 Mvc 中简单使用日志组件
  14. PAT甲级真题打卡:1001.A+B Format
  15. this.$router.push、replace、go的区别
  16. docker-compose模板文件参数说明
  17. duilib窗口从任务栏恢复问题
  18. ASP.NET中的参数与特殊类型和特性
  19. MATLAB——径向基网络拟合曲线和分类
  20. 上线---苹果AppStore审核注意事项,Guideline 1.2 - Safety - User Generated Content,2.1等条例(苹果审核六次拒绝)

热门文章

  1. 8.5-Day1T1--Asm.Def 谈笑风生
  2. php 加解密函数
  3. 4500-X启动到“511K bytes of non-volatile configuration memory”,无法继续?
  4. 科技股 - 5G、芯片、半导体 细分龙头
  5. ES-moreLikeThisQueryBuilder-文章推荐
  6. java泛型demo
  7. Hadoop学习1—浅谈hadoop
  8. js 判断素数(质数)
  9. Computational Complexity of Fibonacci Sequence / 斐波那契数列的时空复杂度
  10. VMware15下载、安装、激活