首页 > 其他分享 >[QOJ1359] Setting Maps

[QOJ1359] Setting Maps

时间:2023-12-11 21:13:25浏览次数:25  
标签:层入 num int edge Maps Setting QOJ1359 hd

题目链接

\(k=1\) 的时候显然是最小割。把一个点 \(u\) 拆成 两个点,中间连流量为 \(c_u\) 的边。

那么考虑扩展到 \(k\) 更大的情况。把上图的每个入点和出点都拆成 \(k\) 个。把节点 \(u\) 第 \(i\) 层入点和第 \(i+1\) 层入点连接,再把第 \(i\) 层入点和所有满足 \(j>i\) 层的出点连接。这样跑最小割时,割掉一条边就会上升一层,然后要从第一层源点跑到第 \(k\) 层汇点,割边的时候就会让每条路径都上升了 \(k\) 层。

#include<bits/stdc++.h>
using namespace std;
const int N=3005,M=200005,INF=2.1e9;
struct edge{
	int v,nxt,f;
}e[M];
int n,m,k,fl[M],c[N],v[N],hd[N],vh[N],q[N],l,r,s,t,e_num=1,sum,cnt,to[N][10],h[N];
long long ans;
void add_edge(int u,int v,int f)
{
	e[++e_num]=(edge){v,hd[u],f};
	hd[u]=e_num;
	e[++e_num]=(edge){u,hd[v],0};
	hd[v]=e_num;
}
int bfs()
{
	memset(v,0,sizeof(v));
	memcpy(vh,hd,sizeof(hd));
	v[q[l=r=1]=s]=1;;
	while(l<=r)
	{
		for(int i=hd[q[l]];i;i=e[i].nxt)
			if(e[i].f&&!v[e[i].v])
				v[q[++r]=e[i].v]=v[q[l]]+1;
		++l;
	}
	return v[t];
}
int dfs(int x,int fl)
{
	if(x==t)
		return fl;
	int k;
	for(int&i=vh[x];i;i=e[i].nxt)
	{
		if(e[i].f&&v[e[i].v]==v[x]+1&&(k=dfs(e[i].v,min(fl,e[i].f))))
		{
			e[i].f-=k,e[i^1].f+=k;
			return k;
		}
	}
	return 0;
}
void dinic()
{
	int k;
	while(bfs())
		while(k=dfs(s,INF))
			ans+=k;
}
int main()
{
	scanf("%d%d%d%d%d",&n,&m,&k,&s,&t);
	int p=2*n+1;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",c+i),sum+=c[i];
		for(int j=0;j<k;j++)
		{
			add_edge(j*p+(i<<1),j*p+(i<<1|1),c[i]);
			for(int a=j+1;a<k;a++)
				add_edge(j*p+(i<<1),a*p+(i<<1|1),INF);
		}
	}
	for(int i=1,u,v;i<=m;i++)
	{
		scanf("%d%d",&u,&v);
		for(int j=0;j<k;++j)
			add_edge((u<<1|1)+j*p,(v<<1)+j*p,INF);
	}
	s<<=1;
	t=((k-1)*p)+(t<<1|1);
	dinic();
	if(ans>sum)
		return puts("-1"),0;
	bfs();
	for(int i=1;i<=n;i++)
		for(int j=0;j<k;j++)
			if(v[j*p+(i<<1)]&&!v[j*p+(i<<1|1)])
				h[i]=1; 
	for(int i=1;i<=n;i++)
		cnt+=h[i];
	printf("%d\n",cnt);
	for(int i=1;i<=n;i++)
		if(h[i])
			printf("%d ",i);
}

标签:层入,num,int,edge,Maps,Setting,QOJ1359,hd
From: https://www.cnblogs.com/mekoszc/p/17895549.html

相关文章

  • MapStruct使用指南以及原理解析
    使用指南:https://juejin.cn/post/6956190395319451679原理解析:https://blog.csdn.net/begefefsef/article/details/1264349501.MapStruct原理是一个Java注解处理器,它基于编译时代码生成的原理,用于自动化Javabean类型之间的映射工作。以下是MapStruct的工作原理的详细解读:注......
  • maven 配置(cmd 黑窗口执行 mvn 时默认的 settings 文件和 idea maven 相关配置)
    写在前面:本文章用于记录博主平时遇到的问题,步骤略粗糙,目的在于记录一边后续博主自己查找,如果能帮助到其他人更好。文章中用到的链接均为自行引入,侵删,谢谢(2I2Rc*@JY8)问题说明:在一次使用cmdmvn命令通过下载到本地的第三方jar包(ojdbc8.jar)创建本地maven仓库的文件结构时发现......
  • Redis报错:WARNING: The TCP backlog setting of 511 cannot be enforced because /pro
    报错内容:1:C08Dec202305:47:33.348#oO0OoO0OoO0OoRedisisstartingoO0OoO0OoO0Oo1:C08Dec202305:47:33.348#Redisversion=7.0.5,bits=64,commit=00000000,modified=0,pid=1,juststarted1:C08Dec202305:47:33.348#Configurationloaded1:M08De......
  • mybatis解析settings标签
    settings标签也是一个很重要的标签,虽然我们在使用的时候,没怎么配置settings标签里面的内容。好像一开始为了看sql语句,我们在settings标签里面配置了日志。<settings><settingname="logImpl"value="SLF4J"/></settings>其他的好像就没干什么了。其实settings标签......
  • appsettings.json和appsettings.Development.json
    在ASP.NETCore中,当应用程序处于开发环境时,默认情况下会加载appsettings.json和appsettings.Development.json文件中的配置,并且appsettings.Development.json中的配置会覆盖appsettings.json中的相同配置。这是ASP.NETCore提供的一种便捷的配置管理机制。如果你希......
  • mapstruct 高级用法自定义转换规则
    https://svip888.blog.csdn.net/article/details/115706803?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-15-115706803-blog-117566307.235%5Ev39%5Epc_relevant_3m_sort_dl_base3&depth_1-utm_sourc......
  • 无涯教程-Erlang - Maps(映射)
    Maps中的每个键-值(key-value)关联称为关联对,该对中的键和值部分称为元素,关联对的数量被称为Map的大小。我们定义了具有2个Maps的MapM1,map_size是用Erlang定义的内置函数,可用于查看Map的大小。-module(helloLearnfk).-export([start/0]).start()->M1=#{name=>john......
  • 关于 SAP 标准 OData 服务 /sap/bc/adt/ato/settings 的作用
    SAPODataService/sap/bc/adt/ato/settings介绍简介/sap/bc/adt/ato/settings是SAP中一个标准的OData服务,用于处理与ABAPDevelopmentTools(ADT)相关的设置。ADT提供了开发、维护和管理ABAP程序的工具,而这个OData服务允许通过HTTP协议访问ADT设置的相关信......
  • ElasticSearch之Get index settings API
    获取指定索引的参数的值。获取指定索引的全部参数,命令样例如下:curl-XGET"https://localhost:9200/testindex_002/_settings?pretty"--cacert$ES_HOME/config/certs/http_ca.crt-u"elastic:ohCxPH=QBE+s5=*lo7F9"执行结果的样例,如下:{"testindex_002":{"......
  • mysql 启动报错【Error while setting value ‘NO_ENGINE_SUBSTITUTION, STRICT_TRANS
    报错如下: 原因:mysql配置文件my.ini里的sql_mode配置项参数中逗号后面有空格解决步骤:打开my.ini文件,找到sql_mode配置项删除空格,保存 ......