WA,10 分求助
查看原帖
WA,10 分求助
585657
lanxi楼主2023/6/27 13:43

10分求助

#include <cmath>
#include <vector>
#include <cstring>
#include <iostream>
using namespace std;
vector <int> a[100001];
int b[1000001];
int vis[1000001];

bool findv(int t,int ji)
{
	if(vis[t] == ji)
	{
		return false;
	}
	vis[t] = ji;
	for(int i = 0;i < a[t].size();i++)
	{
		int u = a[t][i];
		if(b[u] == 0)
		{
			b[u] = t;
			return true;
		}
		else
		{
			if(findv(b[u],ji))
			{
				b[u] = t;
				return true;
			}
		}
	}
}

void lll()
{
	memset(b,0,sizeof(b));
	memset(vis,0,sizeof(vis));
	int n;
	scanf("%d",&n);
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1;j <= n;j++)
		{
			int t;
			scanf("%d",&t);
			if(t == 1)
			{
				a[i].push_back(j);
			}
		}
	}
	int cnt = 0;
	for(int i = 1;i <= n;i++)
	{
		if(findv(i,i))
		{
			cnt++;
		}
	}
	if(cnt == n)
	{
		printf("Yes\n");
	}
	else
	{
		printf("No\n");
	}
}

int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		lll();
	}
    return 0;
}
2023/6/27 13:43
加载中...