蒟蒻初学,爆零,不知错哪
查看原帖
蒟蒻初学,爆零,不知错哪
114288
lijia123楼主2021/6/9 23:24
#include<bits/stdc++.h>
using namespace std;
int ans,an,l[10001],r[10001],p[100001],a[1001][10001],t,n,a1;
bool vis[10001];
int match(int x)
{
	for(int i=1;i<=n;++i)
	{
		if(a[x][i]&&!vis[i]&&l[i])
		{
			vis[i]=1;
			if(!p[i]||match(p[i]))
			{
				p[i]=x;
				return 1;
			}
		}
	}
	return 0;
}
void work()
{
	memset(l,0,sizeof(l));
	memset(r,0,sizeof(r));
	memset(p,0,sizeof(p));
	memset(a,0,sizeof(a));
	an=0,ans=0;
	for(int i=1;i<=n;++i)
	{
		cin>>a1;
		if(a1==1)
		l[i]=1;
		else r[i]=1;
	}
	for(int i=1;i<=n;++i)
	{
		cin>>a1;
		if(a1==1&&l[i]==1)
			r[i]=1,a[i][i]=1;
	}
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
		{
			cin>>a1;
			if(a[i][j]!=1&&a1&&l[j]) a[i][j]=1;
		}
	/*	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
		cout<<a[i][j]<<" ";*/
	for(int i=1;i<=n;++i)
	{
		if(r[i])
		{
			memset(vis,0,sizeof(vis));
			if(!match(i)) 
			{
				cout<<"T_T"<<endl;
				return; 
			}
		}
	}
	cout<<"^_^"<<endl;
	return;
}
int main()
{
	cin>>t>>n;
	while(t--){
	work();
	}
 } 
2021/6/9 23:24
加载中...