zoukankan      html  css  js  c++  java
  • POJ 3041

    在一个N*N的矩阵中 有K个障碍物, 每次使用武器 可以清除某行 或 某列 的障碍物

    问最少使用多少次武器 可以清除所有的障碍物;

    最小点集覆盖 = 最大匹配数

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 #include <vector>
     5 using namespace std;
     6 const int maxn = 505;
     7 vector<int> map[maxn];
     8 int link[maxn];
     9 int vis[maxn];
    10 int n,k;
    11 bool dfs(int t)
    12 {
    13     int i,x,size=map[t].size();
    14     for(i=0;i<size;++i)
    15     {
    16         x=map[t][i];
    17         if(!vis[x])
    18         {
    19             vis[x]=1;
    20             if(link[x]==-1||dfs(link[x]))
    21             {
    22                 link[x]=t;
    23                 return 1;
    24             }
    25         }
    26         
    27     }
    28     return 0;
    29 }
    30 int main()
    31 {
    32     int i,a,b,ans;
    33     while(~scanf("%d%d",&n,&k))
    34     {
    35         for(i=1;i<=n;i++) map[i].clear();
    36         for(i=1;i<=k;i++)
    37         {
    38             scanf("%d%d",&a,&b);
    39             map[a].push_back(b);
    40         }
    41         ans=0;
    42         memset(link,-1,sizeof(link)); 
    43         for(int i=1;i<=n;i++)
    44         {
    45             memset(vis,0,sizeof(vis));
    46             if(dfs(i)) ans++;
    47         }
    48         printf("%d
    ",ans);
    49     }
    50 } 
    我自倾杯,君且随意
  • 相关阅读:
    H5页面尺寸兼容rem
    Mysql索引、explain执行计划
    mysql物理结构
    mysql 架构
    excel 写
    好的开源项目
    批量插入大量数据
    文件下载回显
    shardingsphere 实现 springboot集成 多数据源
    前后端代码特殊符号乱码问题
  • 原文地址:https://www.cnblogs.com/nicetomeetu/p/5509009.html
Copyright © 2011-2022 走看看