求调!!
查看原帖
求调!!
882793
666wula666楼主2023/11/15 10:51
#include<bits/stdc++.h>
using namespace std;
const int N=100000;
int h[N],idx,e[N],ne[N];
bool st[N];

int match[N];
void add(int a,int b){
    e[idx]=b;ne[idx]=h[a];h[a]=idx++;
}
bool find(int x){
    for(int i=h[x];i!=-1;i=ne[i]){
        int  j=e[i];
        if(!st[j]){
            st[j]=true;
            if(!match[j]||find(match[j])){match[j]=x;return true;
        }}
    }
    return false;
}

int main(){
   int t;
   cin>>t;
   while(t--){
       int n;
       cin>>n;  
       idx=0;
   memset(ne,0,sizeof ne);
  memset(e,0,sizeof e);
    memset(h,-1,sizeof h);
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++){
        int x;cin>>x;if(x==1)add(i,j);
    }
   int res=0;
    for(int i=1;i<=n;i++){
        memset(st,false ,sizeof st);
        if(find(i))res++;
      
    }

    	if(res == n) printf("Yes\n");
		else printf("No\n");
		}
}
2023/11/15 10:51
加载中...