zoukankan      html  css  js  c++  java
  • [bzoj1191]超级英雄

    将问题和锦囊二分图匹配即可,注意当某一个不合法就要退出

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define N 2005
     4 struct ji{
     5     int nex,to;
     6 }edge[N];
     7 int E,n,m,x,y,ans,vis[N],head[N],mat[N];
     8 void add(int x,int y){
     9     edge[E].nex=head[x];
    10     edge[E].to=y;
    11     head[x]=E++;
    12 }
    13 bool dfs(int k){
    14     if (vis[k])return 0;
    15     vis[k]=1;
    16     for(int i=head[k];i!=-1;i=edge[i].nex){
    17         int v=edge[i].to;
    18         if ((!mat[v])||(dfs(mat[v]))){
    19             mat[v]=k;
    20             return 1;
    21         }
    22     }
    23     return 0;
    24 }
    25 int main(){
    26     scanf("%d%d",&n,&m);
    27     memset(head,-1,sizeof(head));
    28     for(int i=1;i<=m;i++){
    29         scanf("%d%d",&x,&y);
    30         add(i,x+m+1);
    31         add(i,y+m+1);
    32     }
    33     for(int i=1;i<=m+1;i++){
    34         memset(vis,0,sizeof(vis));
    35         if (!dfs(i)){
    36             printf("%d",i-1);
    37             return 0;
    38         }
    39     }
    40     printf("%d",m);
    41 }
    View Code
  • 相关阅读:
    String系列
    java初始化构造函数调用顺序
    转发和重定向的区别
    HttpServletResponse对象
    JSP九大隐式对象
    关于异常
    MySQL下载、安装及启动
    MySQL的启动
    MySQL下载及安装
    U盘安装Win7操作系统
  • 原文地址:https://www.cnblogs.com/PYWBKTDA/p/11824951.html
Copyright © 2011-2022 走看看