题目链接:

https://www.luogu.org/problemnew/show/P2055

分析:

这道题比较简单,二分图的练习题(当然最大流同理)。

易得我们可以将人放在一侧,床放在一侧。

A与B认识就互相向对方的床连边流量为1

A不回家则S向A连流量为1的边。

A有床则向T连流量为1的边。

跑最大流即可。

最后判断是否等于不回家的人数。

然鹅因为作者较懒,于是写了二分图,大家可以两种方法都看看。

代码:

#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
vector<int>v[20005];
int vis[20005],link[20005];
int t;
int a[55],b[55];
int find(int x)
{
for(int i=0;i<v[x].size();i++)
{
int p=v[x][i];
if(vis[p]!=t)
{
vis[p]=t;
if((!link[p])||find(link[p]))
{
link[p]=x;
return 1;
}
}
}
return 0;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
memset(link,0,sizeof(link));
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
v[i].clear();
}
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&b[i]);
if(b[i]==0&&a[i])
{
v[i].push_back(i);
}
}
int cnt=0;
for(int i=1;i<=n;i++)
{
if(!a[i]||(a[i]&&!b[i]))
cnt++;
}
int tmp;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&tmp);
if(tmp&&a[j])
{
v[i].push_back(j);
}
}
}
int tot=0;
for(int i=1;i<=n;i++)
{
if((a[i]&&!b[i])||!a[i])
{
t++;
if(find(i))
{
tot++;
}
//else
//break;
}
}
if(tot==cnt)
{
printf("^_^\n");
}
else
printf("T_T\n");
}
return 0;
}

最新文章

  1. ubuntu12.04中shell脚本无法使用source的原因及解决方法
  2. 使用jenkins 插件自动部署项目至tomcat
  3. SharePoint 2013 列表关于大数据的测试
  4. MainData仿Backbone Model式 数据模型记录器
  5. Spring3系列5-Bean的基本用法
  6. 剑指offer系列36----二叉搜索树的第k个节点
  7. 线程暴长~Quartz中创建Redis频繁后导致线程暴长
  8. Lua基础之Function
  9. HDOJ/HDU 1372 Knight Moves(经典BFS)
  10. PPTP-VPN日志功能,记录用户登录时间,流量统计,IP地址等信息
  11. ActiveMQ笔记——技术点汇总
  12. wifi扫描
  13. SQL语句整理2
  14. 人生苦短,我用Python(1)
  15. 如何通过setTimeout理解JS运行机制详解
  16. CentOS 7 Shell脚本编程第九讲 read命令简单介绍
  17. jquery和ajax和springmvc
  18. personal project
  19. js数值进制互转
  20. STL中实现 iterator trail 的编程技巧

热门文章

  1. C# 中使用OPenCV(Emgu)心得
  2. 阿里Android开发手册正式版一览
  3. .net core 利用Selenium和PhantomJS后台生成EChart图片
  4. QT5.1编译后的安装目录问题(硬路径问题)
  5. 开源项目 RethinkDB 关闭,创始人总结失败教训(市场定位错误)
  6. windows service 之访问权限(有NetworkService和LocalSystem的区分)
  7. Qt for Android之Hello World
  8. Spring之基于注解的注入
  9. Linux常用实用命令
  10. Hive 学习之路(八)—— Hive 数据查询详解