记录编号 269828 评测结果 RRRRRRRRRR
题目名称 文理分班 最终得分 0
用户昵称 Gravatar安呐一条小咸鱼。 是否通过 未通过
代码语言 C++ 运行时间 0.000 s
提交时间 2016-06-14 07:08:29 内存使用 0.35 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
const int maxn=100;
int zhu[maxn],hui[maxn],match[maxn],d[maxn][maxn],T,t;
bool vis[maxn];
bool dfs(int y)
{
	for(int i=1;i<=t;i++)
	{
		if(d[y][i]==1&&!vis[i])
		{
			vis[i]=1;
			if(match[i]==-1||dfs(match[i]))
			{
				match[i]=y;
				return true;
			}
		}
	}
	return false;
}
void hungary()
{
	for(int i=1;i<=t;i++)
	{
		if(  (zhu[i]==0) || (zhu[i]==1&&hui[i]==0) )
		{
			if(!dfs(i))
			{
				puts("T_T");
				return;
			}
		}
	}
	puts("^_^");
}
int main()
{
	freopen("zjoi09holiday.in","r",stdin);freopen("zjoi09holiday.out","w",stdout);
	
	cin>>T;
	while(T-->0)
	{
		memset(match,-1,sizeof(match));
		scanf("%d",&t);
		for(int i=1;i<=t;i++)
		{
			scanf("%d",&zhu[i]);
			if(zhu[i]!=0&&zhu[i]!=1)
			{
				zhu[i]=0;
			}
		}
		for(int i=1;i<=t;i++)
		{
			scanf("%d",&hui[i]);
			if(hui[i]!=0&&hui[i]!=1)
			{
				hui[i]=0;
			}
		}
		for(int i=1;i<=t;i++)
		{
			for(int j=1;j<=t;j++)
			{
				scanf("%d",&d[i][j]);
				if(d[i][j]!=0&&d[i][j]!=1)
				{
					d[i][j]=0;
				}
				if(i==j)
				{
					d[i][j]=1;
				}
			}
		}
		hungary();
	}
	return 0;
}