bzoj1433 [ZJOI2009]假期的宿舍 最大流
2024-08-31 00:03:07
[ZJOI2009]假期的宿舍
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 3429 Solved: 1459
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1
3
1 1 0
0 1 0
0 1 1
1 0 0
1 0 0
3
1 1 0
0 1 0
0 1 1
1 0 0
1 0 0
Sample Output
ˆ ˆ
HINT
对于30% 的数据满足1 ≤ n ≤ 12。
对于100% 的数据满足1 ≤ n ≤ 50,1 ≤ T ≤ 20。
源点向所有有床位的连边
需要床位的向汇点连边
如果i可以睡j的床
i向j‘连边
#include<iostream>
#include<cstring>
#include<cstdio>
#define T 101
#define inf 0x7fffffff
using namespace std;
int sc[];
int n,tot,cnt=,ans,head[],h[];
struct data{int to,next,v;}e[];
void ins(int u,int v,int w)
{cnt++;e[cnt].to=v;e[cnt].v=w;e[cnt].next=head[u];head[u]=cnt;}
void insert(int u,int v,int w)
{ins(u,v,w);ins(v,u,);}
bool bfs()
{
int q[],t=,w=,i,now;
memset(h,-,sizeof(h));
q[]=h[]=;
while(t!=w)
{
now=q[t];t++;if(t==)t=;
i=head[now];
while(i)
{
if(e[i].v&&h[e[i].to]<)
{h[e[i].to]=h[now]+;q[w++]=e[i].to;if(w==)w=;}
i=e[i].next;
}
}
if(h[T]==-)return ;
return ;
}
int dfs(int x,int f)
{
if(x==T)return f;
int i=head[x],w,used=;
while(i)
{
if(e[i].v&&h[e[i].to]==h[x]+)
{
w=f-used;
w=dfs(e[i].to,min(w,e[i].v));
e[i].v-=w;
e[i^].v+=w;
used+=w;
if(used==f)return f;
}
i=e[i].next;
}
if(!used)h[x]=-;
return used;
}
void dinic(){while(bfs())ans+=dfs(,inf);}
int main()
{
int test;scanf("%d",&test);
while(test--)
{
tot=ans=;cnt=;
memset(head,,sizeof(head));
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&sc[i]);
if(sc[i])
insert(i+n,T,);//如果是在校学生,则有床位
}
int x;
for(int i=;i<=n;i++)
{
scanf("%d",&x);
if((sc[i]&&!x)||!sc[i])
{
insert(,i,);//不回家或者外校的需要床
tot++;
}
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
scanf("%d",&x);
if(x||i==j)insert(i,j+n,);//可以睡的床
}
dinic();
if(ans==tot)puts("^_^");
else puts("T_T");
}
return ;
}
最新文章
- 【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】
- JavaScript 事件管理
- android studio 中依赖库compile 的一些库的地址
- c语言数据结构之 快速排序
- struts2 CVE-2013-2251 S2-016 action、redirect code injection remote command execution
- Redis Sentinel高可用架构
- ubuntu安装postgresql与postgis
- Php 输出语句
- 使用struts的同步令牌避免form的重复提交
- selenium在chrome上运行报 Element is not clickable at point (1096, 26)
- Hive优化(转)
- log4j.properties文件配置--官方文档
- 实现自己的脚本语言ngscript之二:语法分析
- HDU 1074 Doing Homework (状态压缩 DP)
- wampserver 自定义站点
- linux报错-bash: xhost: command not found
- MySQL 中 having 和 where 的区别
- samba服务配置(一)
- 轻松学C#----第一篇笔记
- To be a better me