记录编号 |
269828 |
评测结果 |
RRRRRRRRRR |
题目名称 |
文理分班 |
最终得分 |
0 |
用户昵称 |
安呐一条小咸鱼。 |
是否通过 |
未通过 |
代码语言 |
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;
}