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;
    }
  • 相关阅读:
    信息量
    MVC4的实战:排球计分(一)(综述)
    排球计分规则3.17
    观后感-----怎样成为一个高手
    本学期最后一个博客
    第五组作业
    个人作业
    第五组作业
    个人作业
    一周的总结
  • 原文地址:https://www.cnblogs.com/invoid/p/5384665.html
Copyright © 2011-2022 走看看