• poj1422Air Raid(最小路径覆盖)


    http://poj.org/problem?id=1422

    题意:一个镇上有很多街道,很多十字路口,无循环,把伞兵放在各个十字路口上,使之能把所有的街道都走过,求最小的伞兵数。

    最小路径覆盖=节点数-最大匹配。模板题

    View Code
     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 int map[200][200],link[200],vis[200];
     6 int find(int x,int n)
     7 {
     8     int i,j;
     9     for(i = 1; i <= n ;i++)
    10     {
    11         if(map[x][i]&&!vis[i])
    12         {
    13             vis[i] = 1;
    14             if(link[i]==0||find(link[i],n))
    15             {
    16                 link[i] = x;
    17                 return 1;
    18             }
    19         }
    20     }
    21     return 0;
    22 }
    23 int main()
    24 {
    25     int i,j,k,n,m,t,a,b;
    26     cin>>t;
    27     while(t--)
    28     {
    29         memset(link,0,sizeof(link));
    30         memset(map,0,sizeof(map));
    31         cin>>n>>m;
    32         for(i = 1; i <= m ; i++)
    33         {
    34             cin>>a>>b;
    35             map[a][b] = 1;
    36         }
    37         int sum = 0;
    38         for(i = 1; i <= n ; i++)
    39         {
    40             memset(vis,0,sizeof(vis));
    41             if(find(i,n))
    42             sum++;
    43         }
    44         cout<<n-sum<<endl;
    45     }
    46     return 0;
    47 }
  • 相关阅读:
    predis操作
    mysql 笔记(转载)
    mysql 汉字根据首字母排序
    sql 优化
    update多条不同数据
    解决network is unreachable问题
    开启服务器端口
    数据库开启远程访问
    激活2021.2.1idea
    python向excel追加数据
  • 原文地址:https://www.cnblogs.com/shangyu/p/2866883.html
Copyright © 2020-2023  润新知