标签:二分 同理 洛谷 匹配 int P1129 ZJOI2007 include 任意
还是那句话,二分图最大匹配的题难点在你能否可以看出这个题是二分图匹配和如何建图上。
这道题就很难看出是个二分图最大匹配问题。
仔细考虑一下,可以交换任意的两行,也可以交换任意的两列。
对于任意两个黑方块,如果它们本来在同一行,那么不管怎么交换,它们都会在同一行(列同理)。
而我们一行上只需要特定的那一列是黑就完事了,其他有没有我不care(列同理)
这不就是二分图的匹配问题了嘛。
所以直接上匈牙利算法或跑网络流就完事儿了。
#include <iostream> #include <stdlib.h> #include <stdio.h> #include <string.h> #define N 210 using namespace std; int T,n,g[N][N],nxt[N],vis[N]; bool match(int u){ for(int i=1;i<=n;i++) if(g[u][i]&&!vis[i]){ vis[i]=1; if(!nxt[i]||match(nxt[i])){ nxt[i]=u; return true; } } return false; } int main(){ scanf("%d",&T); while(T--){ memset(g,0,sizeof(g)); memset(nxt,0,sizeof(nxt)); int tot=0; scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&g[i][j]); for(int i=1;i<=n;i++) { memset(vis,0,sizeof(vis)); tot+=match(i); } if(tot==n) printf("Yes\n"); else printf("No\n"); } return 0; }
标签:二分,同理,洛谷,匹配,int,P1129,ZJOI2007,include,任意 来源: https://www.cnblogs.com/BakaCirno/p/11734064.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。