博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1422 Air Raid
阅读量:5281 次
发布时间:2019-06-14

本文共 1026 字,大约阅读时间需要 3 分钟。

 

一开始我以为是最小支配集,后来胡乱YY一下,以为最小支配集 == 最大独立数 == N-最大匹配,结果给我胡乱AC了。后来去网上搜搜解题报告才知道是最小路径覆盖。

CODE:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib> 
using 
namespace std;
#define MAXN 130
#define MAXM 20010
int G[MAXN][MAXN];
int xlink[MAXN];
int ylink[MAXN];
bool vis[MAXN];  
int nx, ny, m;
inline 
void init()
{
    memset(G, 
0
sizeof(G));
    memset(xlink, -
1
sizeof(xlink));
    memset(ylink, -
1
sizeof(ylink));
}
bool ED(
int u)
{
    
for(
int v = 
1; v <= ny; v++) 
if(G[u][v]) 
    {
        
if(!vis[v]) 
        {
            vis[v] = 
1;
            
if(ylink[v] == -
1 || ED(ylink[v])) 
            { 
                xlink[u] = v;
                ylink[v] = u; 
                
return 
true;
            } 
        }
    }
    
return 
false;
}
void MaxMatch()
{
    
int ans = 
0;
    
for(
int i = 
1; i <= nx; i++)
    {
        
if(xlink[i] == -
1)
        {
            memset(vis, 
0
sizeof(vis));
            ans += ED(i);
        }
    }
    printf(
"
%d\n
", nx-ans);
}
int main()
{
    
int T;
    scanf(
"
%d
", &T);
    
while(T--)
    {
        init();
        scanf(
"
%d%d
", &nx, &m);
        ny = nx;
        
while(m--)
        {
            
int u, v;
            scanf(
"
%d%d
", &u, &v);
            G[u][v] = 
1;
        }
        MaxMatch();
    }
    
return 
0;
}

 

 

转载于:https://www.cnblogs.com/g0feng/archive/2012/11/11/2765425.html

你可能感兴趣的文章
JavaScript 变量
查看>>
java实用类
查看>>
smarty模板自定义变量
查看>>
研究称90%的癌症由非健康生活习惯导致
查看>>
命令行启动Win7系统操作部分功能
查看>>
排序sort (一)
查看>>
Parrot虚拟机
查看>>
Teamcenter10 step-by-step installation in Linux env-Oracle Server Patch
查看>>
Struts2学习(三)
查看>>
Callable和Runnable和FutureTask
查看>>
GitHub 多人协作开发 三种方式:
查看>>
文本域添加编辑器
查看>>
Yum安装MySQL以及相关目录路径和修改目录
查看>>
java获取hostIp和hostName
查看>>
关于web服务器和数据库的各种说法(搜集到的)
查看>>
C# Stream 和 byte[] 之间的转换
查看>>
OMG: daily scrum nine
查看>>
redis与spring结合错误情况
查看>>
第六章 字节码执行方式--解释执行和JIT
查看>>
字符串方法title()、istitle()
查看>>