为什么这个连输入都有问题啊啊啊啊啊
查看原帖
为什么这个连输入都有问题啊啊啊啊啊
377511
果圆楼主2021/5/22 16:38
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
int h[40010],ne[40010],to[40010];
int n,u,l,match[210],g[210][210];
bool st[210];
void add(int a,int b)
{
	u++;
	to[u]=b;
	ne[u]=h[a];
	h[a]=u;
}
int dfs(int x)
{
	for(int i=h[x];i;i=ne[i])
	{
		int t=to[i];
		if(!st[t])
		{
			st[t]=1;
			if(!match[t]||dfs(match[t])) 
			{
				match[t]=x;
				return 1;
			}
		}
	}
	return 0;
}
int main()
{
	cin>>l;
	while(l--)
	{
		cin>>n;
		u=0;
		for(int i=1;i<=40010;i++)
		{
			h[i]=ne[i]=to[i]=0;
		}
		for(int i=1;i<=210;i++)
		{
			st[i]=match[i]=0;
		}
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				cin>>g[i][j];
			}
		}
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				if(g[j][i]==1) add(i,j);
			}
		}
		int flag=1;
		for(int i=1;i<=n;i++)
		{
			memset(st,false,sizeof st);
			if(!dfs(i))
			{
				flag=0;
				break;
			}
		}
		if(flag) puts("Yes");
		else puts("No");
    }
	return 0;
}
2021/5/22 16:38
加载中...