zoukankan      html  css  js  c++  java
  • POJ3014 Asteroids 最小点覆盖

      题目链接:http://poj.org/problem?id=3041

      很基础的最小点覆盖题目,把X,Y坐标轴上的点分别看做X集合和Y集合,然后如果有asteroid就连边,很容易看出就是把所有的边覆盖,即用最少的点覆盖所有的边。

      最小点覆盖=最大匹配数

     1 //STATUS:G++_AC_47MS_668KB
     2 #include<stdio.h>
     3 #include<math.h>
     4 #include<stdlib.h>
     5 #include<string.h>
     6 #include<string>
     7 #define LL __int64
     8 const int MAX=510,INF=1000000000;
     9 
    10 bool g[MAX][MAX];
    11 int vis[MAX],y[MAX],ok[MAX];
    12 int n,m;
    13 
    14 int DFS(int u)
    15 {
    16     if(ok[u])return 1;
    17     int i;
    18     for(i=0;i<n;i++)
    19         if(g[u][i] && !vis[i]){
    20             vis[i]=1;
    21             if(y[i]==-1 || DFS(y[i])){
    22                 y[i]=u;
    23                 return 1;
    24             }
    25         }
    26     return 0;
    27 }
    28 
    29 int main()
    30 {    
    31 //    freopen("in.txt","r",stdin);
    32     int i,a,b,ans;
    33     while(~scanf("%d%d",&n,&m))
    34     {
    35         memset(g,0,sizeof(g));
    36         memset(ok,0,sizeof(ok));
    37         memset(y,-1,sizeof(y));
    38         for(i=0;i<m;i++){
    39             scanf("%d%d",&a,&b);
    40             g[a-1][b-1]=1;
    41         }
    42 
    43         for(i=ans=0;i<n;i++){
    44             memset(vis,0,sizeof(vis));
    45             if(DFS(i))ans++;
    46             else ok[i]=1;
    47         }
    48 
    49         printf("%d\n",ans);
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    第一周(LNMP-Nginx_php-fpm-80转443)
    mysql编译安装
    PB中的DataStore的应用示例
    linux 安装 rabbitmq
    php 扩展 rabbitmq popt
    mongodb基本指令
    单点登录
    js调用打印机打印
    nginx开启tls1.2及一些注意问题
    蓝桥杯2017年省赛A组题目总结
  • 原文地址:https://www.cnblogs.com/zhsl/p/2784303.html
Copyright © 2011-2022 走看看