萌新妹子在线求调二分图水题
查看原帖
萌新妹子在线求调二分图水题
276588
lonely_cyx楼主2023/8/20 22:38

Rt。

全WA

#include<bits/stdc++.h>
using namespace std;
int n,m,t;
vector<int>edge[1000010];
int vis[1000010],f[1000010];
bool dfs(int u)
{
	for(int i=0;i<edge[u].size();i++)
	{
		int v=edge[u][i];
		if(!vis[v])
		{
			vis[v]=1;
			if(!f[v]||dfs(f[v]))
				return f[v]=u,1;
		}
	}
	return 0;
}
int k[1000010],g[1000010];
void solve()
{
	int sum=0;
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>k[i];
	for(int i=1;i<=n;i++)
	{
		cin>>g[i];
		if(k[i]==1&&g[i]==1)
			sum++;
	}
	for(int i=1;i<=n;i++)
	{
		if(k[i]==1)
			edge[i].push_back(i);
		for(int j=1;j<=n;j++)
		{
			int l;
			cin>>l;
			if(l==1&&(k[i]==1&&g[i]==0))
			{
				edge[i].push_back(j);
			}
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		memset(vis,0,sizeof(vis));
		ans+=dfs(i);
	}
	if(ans>=n-sum)
		cout<<"^_^\n";
	else
		cout<<"T_T\n";
}
int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		solve();
	}
	return 0;
}
2023/8/20 22:38
加载中...