zoukankan      html  css  js  c++  java
  • hdu1151 Air Raid 二分匹配

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1151

    求最小路径覆盖

    二分图最小路径覆盖=点的个数-最大匹配。

    代码:

     1 #include<iostream>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #include<cstdio>
     5 using namespace std;
     6 #define maxn  125
     7 int g[maxn][maxn];
     8 int vis[maxn];
     9 int cx[maxn];
    10 int cy[maxn];
    11 int n;
    12 int m;
    13 int ans;
    14 int path(int u)
    15 {
    16 
    17   vis[u]=1;
    18   for(int v=1;v<=n;v++)
    19   {
    20      if(vis[v]==0 && g[u][v]!=0)
    21      {
    22         vis[v]=1;
    23 
    24         if(cy[v]==-1 || path(cy[v]))
    25         {
    26             cx[u]=v;
    27             cy[v]=u;
    28             return 1;
    29         }
    30      }
    31   }
    32   return 0;
    33 }
    34 void MaxMatch()
    35 {
    36    memset(cx,-1,sizeof(cx));
    37    memset(cy,-1,sizeof(cy));
    38 
    39    for(int i=1;i<=n;i++)
    40    {
    41       if(cx[i]==-1)
    42       {
    43          
    44         memset(vis,0,sizeof(vis));
    45         ans+=path(i);
    46       }
    47    }
    48 }
    49 int main()
    50 {
    51    int t;
    52   scanf("%d",&t);
    53    while(t--)
    54    {
    55        ans=0;
    56        scanf("%d",&n);
    57        scanf("%d",&m);
    58        memset(g,0,sizeof(g));  
    59        int s,e;
    60       for(int i=0;i<m;i++)
    61       {
    62        scanf("%d%d", &s,&e);
    63        g[s][e]=1;
    64       }
    65          MaxMatch();
    66          cout<<n-ans<<endl;
    67 
    68       
    69    }
    70    return 0;
    71 }
  • 相关阅读:
    转载:通过Servlet生成验证码
    转载:web工程中URL地址的推荐写法
    使用Git上传本地项目代码到github
    $watch 和 $apply
    平时用的sublime插件
    zTree.js
    js
    npm install详解
    git
    git基础
  • 原文地址:https://www.cnblogs.com/xiaozhuyang/p/hdu1151.html
Copyright © 2011-2022 走看看