[bzoj] 1059: [ZJOI2007]矩阵游戏

来源:互联网 发布:2017淘宝店还能赚钱吗 编辑:程序博客网 时间:2024/06/05 06:34

第一眼看上去马上想到用状态压缩,连个二分图匹配都没看出来。

此题其实就是找n个不同行或不同列的点,我们把每一行匹配一列,用匈牙利直接跑就行了。


#include <cstdio>#include <cstring>using namespace std;int t,n;int map[205][205];bool vis[205],f;int  ver[205];bool cop(int now){register int i;for (i=1;i<=n;i++){if (!vis[i]&&map[now][i]){vis[i]=1;if (!ver[i]||cop(ver[i])){ver[i]=now;return 1;}}}return 0;}int main(){register int i,j;scanf("%d",&t);while (t--){memset(ver,0,sizeof(ver));scanf("%d",&n);for (i=1;i<=n;i++)for (j=1;j<=n;j++){scanf("%d",&map[i][j]);}for (i=1;i<=n;i++){f=1;memset(vis,0,sizeof(vis));if (!cop(i)) {printf("No\n");f=0;break;}}if (f) printf("Yes\n");}return 0;}


0 0
原创粉丝点击