BZOJ 1059 矩阵游戏(神奇的二分图匹配)
2014-06-20 16:30
190 查看
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1059
题意:给出一个N*N的01矩阵。有两种操作:(1)交换任意两行;(2)交换任意两列。问最后能否使得主对角线上全部为1?
思路:我们发现,对于同一行的两个1,比如 (i,j)和(i,j+1),无论如何我们也不能把这两个1都移动到主对角线上,换句话说,最多能够将其中一个1移动到主对角线上。因为,若我们想将这两 个同时移动到主对角线上,不妨设为(i1,i1),(i2,i2)。首先,我们要将其移动到(i,i1),(i,i2),这个好办只要交换列就行。下面, 我们将第一个从(i,i1)移动到(i1,i1),也就是交换两行,我们发现,(i,i2)也被交换到了第i1行,到了(i1,i2)。而把 (i1,i2)换到(i2,i2)时,(i1,i1)就到了(i2,i1)。囧。。因此,我们得出结论:在同一行或者同一列的1不可能有2个或者两个以上 同时移动到主对角线上。换句话说,只要不在同一行同一列的两个1我们才能将其都移动到主对角线上。那么我们的问题转化成找出n个1,这些1两两不同行不同 列,我们能够将其同时移动到主对角线上。那么我们怎么找n个这样的呢?我们将位置(i,j)的1,作为一条i到j的边。这样,最后得到的完美匹配中一行或 者一列的1所建立的边最多能够有一个被使用到,而使用到就表示我们挑选了这个点的1。正好符合上面的结论。
题意:给出一个N*N的01矩阵。有两种操作:(1)交换任意两行;(2)交换任意两列。问最后能否使得主对角线上全部为1?
思路:我们发现,对于同一行的两个1,比如 (i,j)和(i,j+1),无论如何我们也不能把这两个1都移动到主对角线上,换句话说,最多能够将其中一个1移动到主对角线上。因为,若我们想将这两 个同时移动到主对角线上,不妨设为(i1,i1),(i2,i2)。首先,我们要将其移动到(i,i1),(i,i2),这个好办只要交换列就行。下面, 我们将第一个从(i,i1)移动到(i1,i1),也就是交换两行,我们发现,(i,i2)也被交换到了第i1行,到了(i1,i2)。而把 (i1,i2)换到(i2,i2)时,(i1,i1)就到了(i2,i1)。囧。。因此,我们得出结论:在同一行或者同一列的1不可能有2个或者两个以上 同时移动到主对角线上。换句话说,只要不在同一行同一列的两个1我们才能将其都移动到主对角线上。那么我们的问题转化成找出n个1,这些1两两不同行不同 列,我们能够将其同时移动到主对角线上。那么我们怎么找n个这样的呢?我们将位置(i,j)的1,作为一条i到j的边。这样,最后得到的完美匹配中一行或 者一列的1所建立的边最多能够有一个被使用到,而使用到就表示我们挑选了这个点的1。正好符合上面的结论。
int g ,n; int match ,h ; int DFS(int u) { int i; FOR1(i,n) if(!h[i]&&g[u][i]) { h[i]=1; if(!match[i]||DFS(match[i])) { match[i]=u; return 1; } } return 0; } int main() { rush() { RD(n); int i,j; FOR1(i,n) FOR1(j,n) RD(g[i][j]); clr(match,0); FOR1(i,n) { clr(h,0); if(!DFS(i)) break; } if(i<=n) puts("No"); else puts("Yes"); } }
相关文章推荐
- BZOJ 1059 矩阵游戏 二分图匹配
- bzoj1059: [ZJOI2007]矩阵游戏(二分图匹配)
- [BZOJ1059][ZJOI2007]矩阵游戏(二分图匹配)
- BZOJ 1059 矩阵游戏(二分图匹配,匈牙利算法)
- BZOJ 1059: [ZJOI2007]矩阵游戏【二分图匹配】
- BZOJ 1059 [ZJOI2007]矩阵游戏 二分图匹配
- [bzoj1059][二分图匹配]矩阵游戏
- bzoj1059:[ZJOI2007]矩阵游戏【二分图匹配】
- [ZJOI2007][BZOJ1059] 矩阵游戏|二分图匹配|匈牙利算法
- 【bzoj1059】【zjoi2007】【矩阵游戏】【二分图匹配】
- BZOJ 1059: [ZJOI2007]矩阵游戏 二分图匹配
- bzoj 1059: [ZJOI2007]矩阵游戏 二分图匹配
- [BZOJ1059][ZJOI2007][二分图匹配]矩阵游戏
- BZOJ 1059: [ZJOI2007]矩阵游戏 二分图匹配
- 【BZOJ1059】[ZJOI2007][二分图匹配]矩阵游戏
- 【BZOJ1059】[ZJOI2007]矩阵游戏【二分图匹配】
- [BZOJ1059] [ZJOI2007] 矩阵游戏 - 二分图匹配
- _bzoj1059 [ZJOI2007]矩阵游戏【二分图匹配】
- bzoj 1059: [ZJOI2007]矩阵游戏 -- 二分图匹配
- bzoj1059: [ZJOI2007]矩阵游戏(网络流 或 二分图匹配)[省选计划系列]