二分图
/************************************************************** Problem: 1059 User: lxy8584099 Language: C++ Result: Accepted Time:348 ms Memory:1536 kb ****************************************************************/ #include<bits/stdc++.h> /* 二分图匹配 (跑网络流我也不介意。。。 */ using namespace std; const int N=250; int T,n; int d[N][N],vis[N],fa[N]; bool dfs(int u,int t) { for(int v=1;v<=n;v++) if(d[u][v]) { if(vis[v]^t) { vis[v]=t; if(!fa[v]||dfs(fa[v],t)) {fa[v]=u;return 1;} } } return 0; } int main() { scanf("%d",&T);while(T--) { memset(d,0,sizeof(d)); memset(fa,0,sizeof(fa)); memset(vis,0,sizeof(vis)); scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1,c;j<=n;j++) scanf("%d",&c),d[i][j]=c; bool p=0; for(int i=1;i<=n;i++) if(!dfs(i,i)) {p=1;break;} if(p) puts("No"); else puts("Yes"); } return 0; }