记录编号 479104 评测结果 AAAAAAAAAA
题目名称 [ZJOI 2009] 假期的宿舍 最终得分 100
用户昵称 GravatarHzoi_moyi 是否通过 通过
代码语言 C++ 运行时间 0.063 s
提交时间 2017-12-16 16:22:37 内存使用 3.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int sj=155;
int ca,n,l[sj],h[sj],e;
bool zx[sj],hj[sj],op,a1,f[sj];
struct B
{
	int ne,v;
}b[20000];
void add(int x,int y)
{
	b[e].v=y,b[e].ne=h[x],h[x]=e++;
}
void init()
{
	e=0,op=1;
	memset(h,-1,sizeof(h));
	memset(l,-1,sizeof(l));
	memset(zx,0,sizeof(zx));
	memset(hj,0,sizeof(hj));
}
bool d(int x)
{
	for(int i=h[x];i!=-1;i=b[i].ne)
		if(!f[b[i].v])
		{
			f[b[i].v]=1;
			if(l[b[i].v]==-1||d(l[b[i].v]))
		    {
		    	l[b[i].v]=x;
		    	return 1;
			}
		}
	return 0;
}
int main()
{
	//freopen("t.txt","r",stdin);
	freopen("zjoi09holiday.in","r",stdin);
	freopen("zjoi09holiday.out","w",stdout);
	scanf("%d",&ca);
	for(int k=1;k<=ca;k++)
	{
		init();
		scanf("%d",&n);
		for(int j=1;j<=n;j++)  scanf("%d",&zx[j]);
		for(int j=1;j<=n;j++)  
		{    
			scanf("%d",&hj[j]);
	        if(zx[j]&&!hj[j])  add(j,j);
		}
		for(int i=1;i<=n;i++)
	        for(int j=1;j<=n;j++)
	        {
	        	scanf("%d",&a1);
	        	if(a1&&zx[i])  add(j,i);
			}
		for(int i=1;i<=n;i++)
		    if((!zx[i])||(zx[i]&&!hj[i]))
		    {
		    	memset(f,0,sizeof(f));
		    	if(!d(i))
		    	{
		    		op=0,printf("T_T\n");
		    		break;
				}
			}
		if(op)  printf("^_^\n");
	}
	return 0;
}