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

    二分图最大顺序匹配。 拿题目编号和锦囊编号建二分图,跑匈牙利算法。

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    const int maxn = 2000 + 10;
    const int maxm = 4000 + 10;
    
    int n,m,e;
    int v[maxn],next[maxm],h[maxn];
    int p[maxn];
    bool vis[maxn];
    
    void add(int a,int b) {
        v[e] = b; next[e] = h[a]; h[a] = e++; 
    }
    
    bool find(int u) {
        if(vis[u]) return false;
        vis[u] = true;
        
        for(int i = h[u]; ~i; i = next[i]) 
            if(!p[v[i]] || find(p[v[i]])) {
                p[v[i]] = u;
                return true;
            }
        
        return false;
    }
    
    int main() {
        scanf("%d%d",&n,&m);
        memset(h,-1,sizeof(h));
        for(int i = 1,a,b; i <= m; i++) {
            scanf("%d%d",&a,&b);
            add(i,a);
            add(i,b);
        }
        int res;
        for(res = 1; res <= m; res++) {
            memset(vis,0,sizeof(vis));
            if(!find(res))
                break; 
        }
        printf("%d
    ",res-1);
        return 0;
    }
  • 相关阅读:
    Javascript笔记部分
    JQuery学习笔记(3)
    WPF中批量进行验证操作
    学习sqlserver的函数方法
    .NET学习笔记(2)
    Asp.Net页面生命周期
    ThreadLocal
    NIO内存映射
    CAS基础和原子类
    Java锁概念基础
  • 原文地址:https://www.cnblogs.com/invoid/p/5384665.html
Copyright © 2011-2022 走看看