记录编号 173001 评测结果 AAAAAAAAAA
题目名称 Dormitory 最终得分 100
用户昵称 Gravatarforever 是否通过 通过
代码语言 C++ 运行时间 0.025 s
提交时间 2015-07-27 18:43:02 内存使用 0.35 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int t,n,a;
int shi[101],chu[101],lian[101][101];
bool v[101];
int match[101];
bool judge(int y)
{
	for(int j=1;j<=n;++j)
	{
		if(lian[y][j])
		{
			if(!v[j])
			{
				v[j]=1;
				if(match[j]==-1||judge(match[j]))
				{
					match[j]=y;
					return true;
				}
			}
		}
	}
	return false;
}
void work()
{   bool flag=1;
	for(int i=1;i<=n;++i)
	{   
		if(!shi[i]||shi[i]&&!chu[i])
		{   for(int j=1;j<=n;++j) v[j]=0;
			if(!judge(i))
			{   flag=0;
				printf("T.T\n");
				return;
			}
		}
	}
	printf("^.^\n");
}
void initjudge()
{   scanf("%d",&t);
	for(int o=1;o<=t;++o)
	{   memset(match,-1,sizeof(match));
        memset(v,0,sizeof(v));
        memset(shi,0,sizeof(shi));
		scanf("%d",&n);
		for(int i=1;i<=n;++i) scanf("%d",&shi[i]);
		for(int i=1;i<=n;++i) scanf("%d",&chu[i]);
		for(int i=1;i<=n;++i)
		{
			for(int j=1;j<=n;++j)
			{   lian[i][j]=0;
				scanf("%d",&lian[i][j]);
				if(i==j) lian[i][j]=1;
				if(!shi[j]) lian[i][j]=0;//不是客人,就不可能是朋友; 
			}
		}
		work();
	}
}


int main()
{   freopen("dormitory.in","r",stdin);
	freopen("dormitory.out","w",stdout);
	initjudge();
	//while(1);
}