zoukankan      html  css  js  c++  java
  • HDU1151 Air Raid

      原题传送:http://acm.hdu.edu.cn/showproblem.php?pid=1151

      DAG图的最小路径覆盖数 = 节点数(n)- 最大匹配数(m)

        所以,关键是求二分图的最大匹配数,上匈牙利就行了。

    View Code
     1 #include <iostream>
     2 #include <string.h>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 const int M=120 + 2;
     7 bool g[M][M],visit[M];
     8 int  link[M],m,n,k;
     9 
    10 bool find(int i)
    11 {
    12     int j;
    13     for(j=1;j<=n;j++)
    14     {
    15         if(g[i][j] && !visit[j])
    16         {
    17             visit[j]=true;
    18             if(!link[j] || find(link[j]))
    19             {
    20                 link[j]=i;
    21                 return true;
    22             }
    23         }
    24     }
    25     return false;
    26 }
    27 
    28 int main()
    29 {
    30     int i,j,res,T;
    31     cin >> T;
    32     while(T --)
    33     {
    34         cin >> n >> m;
    35         memset(g,false,sizeof(g));
    36         memset(link,false,sizeof(link));
    37         for(int k = 0; k < m; k ++)
    38         {
    39             cin>>i>>j;
    40             g[i][j]=true;
    41         }
    42         for(res=0,i=1;i<=n;i++)
    43         {
    44             memset(visit,0,sizeof(visit));
    45             if(find(i))
    46                 res++;
    47         }
    48         cout<<n-res<<endl;
    49     }
    50     return 0;
    51 }

      

  • 相关阅读:
    PHP中关于字符串的连接
    好用的FireFox(FF)插件
    Scripted Operation
    Scripted device
    chgrp chown
    wait_for_devices
    mysql create user
    mysql
    create user mysql
    Inserting/Removing shutters and filters
  • 原文地址:https://www.cnblogs.com/huangfeihome/p/2785672.html
Copyright © 2011-2022 走看看