[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

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 ;
}

最新文章

  1. 【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】
  2. JavaScript 事件管理
  3. android studio 中依赖库compile 的一些库的地址
  4. c语言数据结构之 快速排序
  5. struts2 CVE-2013-2251 S2-016 action、redirect code injection remote command execution
  6. Redis Sentinel高可用架构
  7. ubuntu安装postgresql与postgis
  8. Php 输出语句
  9. 使用struts的同步令牌避免form的重复提交
  10. selenium在chrome上运行报 Element is not clickable at point (1096, 26)
  11. Hive优化(转)
  12. log4j.properties文件配置--官方文档
  13. 实现自己的脚本语言ngscript之二:语法分析
  14. HDU 1074 Doing Homework (状态压缩 DP)
  15. wampserver 自定义站点
  16. linux报错-bash: xhost: command not found
  17. MySQL 中 having 和 where 的区别
  18. samba服务配置(一)
  19. 轻松学C#----第一篇笔记
  20. To be a better me

热门文章

  1. ubuntu 使用apt命令时报错 E: Could not get lock /var/lib/dpkg/lock - open...
  2. android上部署tensorflow
  3. 自实现RPC调用
  4. linux ecrypt decrypt
  5. UI调试神器 for ios:Reveal的使用与破解
  6. 【Git版本控制】idea中使用git进行项目管理
  7. linux常用命令(配置查看,定时任务)
  8. Tcl/Cmds
  9. 解决oh-my-zsh卡顿问题
  10. Docker工具