zoukankan      html  css  js  c++  java
  • 【luogu P1640 [SCOI2010]连续攻击游戏】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1640
    数据有点水吧,从属性值连向对应武器编号。
    枚举属性值匹配,遇到第一个无法匹配的直接跳出就好惹~。

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    inline int read()
    {
        int ret=0;
        char c=getchar();
        while (c<'0' || c>'9') c=getchar();
        while (c>='0' && c<='9'){
            ret=((ret<<3)+(ret<<1))+c-'0';
            c=getchar();
        }
        return ret;
    }
    const int maxn = 500000+1;
    int n, ans, cnt;
    int link[maxn], head[maxn];
    bool vis[maxn];
    struct edge{
        int v,next;
    }e[maxn<<2];
    void add(int u, int v)
    {
        e[++cnt].v = v;
        e[cnt].next = head[u];
        head[u] = cnt;
    }
    bool dfs(int u)
    {
        int v = head[u];
        for(int i = v; i != 0; i = e[i].next)
        {
            if(!vis[e[i].v])
            {
                vis[e[i].v] = 1;
                if(!link[e[i].v] || dfs(link[e[i].v])) 
                {
                    link[e[i].v] = u;
                    return 1;
                }
            }	
        }
        return 0;
    }
    int main()
    {
        int u,v;
        n = read();
        for(int i = 1; i <= n; i++)
        {
            u = read(); v = read();
            add(u,i);
            add(v,i);
        }
        for(int i = 1; i <= n; i++)
        {
            memset(vis,0,sizeof(vis));
            if(dfs(i)) ans++;
            else break;
        }
        printf("%d
    ",ans);
        return 0; 
    }
    

    隐约雷鸣,阴霾天空,但盼风雨来,能留你在此。

    隐约雷鸣,阴霾天空,即使天无雨,我亦留此地。

  • 相关阅读:
    总结:多校1
    简易数论练习
    2017 多校1
    简易数论函数变换学习
    petrozavodsk1
    Permutacja
    图片上传阿里云oss 数据存入redis List
    tp5实现月统计数据
    es6 新特性
    es6 新特性总结
  • 原文地址:https://www.cnblogs.com/MisakaAzusa/p/9183029.html
Copyright © 2011-2022 走看看