zoukankan      html  css  js  c++  java
  • bzoj1191 [ HNOI2006 ] --匈牙利算法

    这道题一看就是求二分图最大匹配,不过需要注意的是答案需要前面所有题目都能答对,因为这里WA了无数次......

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int tot,a[3001][2],i,j,n,m,k,f[3001],x,y;
    bool b[3001],flag=0;
    bool dfs(int x){
        b[x]=1;
        if(!f[a[x][0]]){
            f[a[x][0]]=x;
            return 1;
        }
        if(!b[f[a[x][0]]]&&dfs(f[a[x][0]])){
            f[a[x][0]]=x;
            return 1;
        }
        if(!f[a[x][1]]){
            f[a[x][1]]=x;
            return 1;
        }
        if(!b[f[a[x][1]]]&&dfs(f[a[x][1]])){
            f[a[x][1]]=x;
            return 1;
        }
        return 0;
    }
    int main()
    {
        scanf("%d%d",&m,&n);
        for(i=1;i<=n;++i)scanf("%d%d",&a[i][0],&a[i][1]);
        for(i=1;i<=n;++i){
            memset(b,0,sizeof(b));
            if(!dfs(i)){
                flag=1;
                break;
            }
        }
        printf("%d
    ",!flag?n:(i-1));
        return 0;
    }
  • 相关阅读:
    程序中图片透明 函数(使用SetBkColor API函数)
    编程中使用锁
    event内存泄漏
    diskcache
    linux内核管理
    Vue
    Paxos算法
    索引以及页和区
    CoreRT
    二叉树
  • 原文地址:https://www.cnblogs.com/gjghfd/p/5645059.html
Copyright © 2011-2022 走看看