码迷,mamicode.com
首页 > 其他好文 > 详细

luogu1640 [SCOI2010]连续攻击游戏

时间:2018-01-15 20:21:17      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:匹配   source   bre   add   pos   markdown   eof   name   ios   

二分图匹配,一边是属性值,一边是武器

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int n, lst[1010005], uu, vv, hea[10005], cnt, ans;
bool vis[1010005];
struct Edge{
    int too, nxt;
}edge[2000005];
void add_edge(int fro, int too){
    edge[++cnt].nxt = hea[fro];
    edge[cnt].too = too;
    hea[fro] = cnt;
}
bool dfs(int x){
    for(int i=hea[x]; i; i=edge[i].nxt){
        int t=edge[i].too;
        if(!vis[t]){
            vis[t] = true;
            if(!lst[t] || dfs(lst[t])){
                lst[t] = x;
                return true;
            }
        }
    }
    return false;
}
int main(){
    cin>>n;
    for(int i=1; i<=n; i++){
        scanf("%d %d", &uu, &vv);
        add_edge(uu, i+10000);
        add_edge(vv, i+10000);
    }
    for(int i=1; i<=10000; i++){
        memset(vis, 0, sizeof(vis));
        if(!dfs(i))
            break;
        ans = i;    
    }
    cout<<ans<<endl;
    return 0;
}

luogu1640 [SCOI2010]连续攻击游戏

标签:匹配   source   bre   add   pos   markdown   eof   name   ios   

原文地址:https://www.cnblogs.com/poorpool/p/8289291.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!