Advertisement

AcWing 372的棋盘覆盖问题利用二分图和匈牙利算法解决

阅读量:

AcWing 372. 棋盘覆盖
匈牙利算法(亦称渣男算法):将每一个格子视为图中的节点,并在各节点之间建立连接边,从而构成一张图。随后,对该图实施二分匹配操作,以确定其中所能形成的最大匹配点对数量。

复制代码
    #include<bits/stdc++.h>
    
    using namespace std;
    
    #define x first
    #define y second
    
    typedef pair<int, int>PII;
    
    const int N = 105;
    
    bool g[N][N];  //记录这条边能不能用 
    int n, m;
    PII pei[N][N];  //记录这个点所匹配的点是什么
    int dx[4] = {-1, 0, 1, 0};
    int dy[4] = {0, 1, 0, -1};
    bool st[N][N];
    
    bool find(int xx, int yy){  //给xx、yy找对象 
    	for(int i = 0; i < 4; i ++ ){
    		int a = xx + dx[i]

全部评论 (0)

还没有任何评论哟~