• bzoj1059: [ZJOI2007]矩阵游戏


    二分图匹配。

    $VMMT_Q(NK4B(%R5A525%PX

    补充,感觉之前说的不够详细,如果有完美匹配的话,每行都有一个对应的列,那么换来换去以后,对角线就全黑了。。。

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    const int maxn = 400 + 10;
    
    bool vis[maxn];
    int p[maxn],map[maxn][maxn];
    int n,T;
    
    bool find(int x) {
        if(vis[x]) return false;
        vis[x]=1;
        
        for(int i=1;i<=n;i++) 
            if(map[x][i]) {
                if(!p[i] || find(p[i])) {
                    p[i]=x;
                    return true;
            }
        }
        return false;
    }
    
    bool work() {
        memset(p,0,sizeof(p));
        for(int i=1;i<=n;i++) {
            memset(vis,0,sizeof(vis));
            if(!find(i)) 
                return false;
        }
        return true;    
    }
    
    int main() {
        scanf("%d",&T);
        while(T--) {
            scanf("%d",&n);
            memset(map,0,sizeof(map)); 
            for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++) 
                scanf("%d",&map[i][j]);
            if(work()) printf("Yes
    ");
            else printf("No
    ");
        }
        return 0;
    }
  • 相关阅读:
    Linux嵌入式 -- 内核
    Linux嵌入式 -- 内核
    utf8和utf8mb4区别
    二叉树的实现
    python资源大全2
    树与树算法
    二叉树
    70.最小生成树
    68.营救问题(广搜)
    67.迷宫问题(广搜)
  • 原文地址:https://www.cnblogs.com/invoid/p/5528232.html
Copyright © 2020-2023  润新知