zoukankan      html  css  js  c++  java
  • bzoj4423 [AMPPZ2013]Bytehattan

    题目描述:

    bz

    题解:

    平面图转对偶图+并查集维护。

    其实操作就是把两个格子捏在一起,这个并查集就可以搞。

    代码:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int N = 1550;
    template<typename T>
    inline void read(T&x)
    {
        T f = 1,c = 0;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){c=c*10+ch-'0';ch=getchar();}
        x = f*c;
    }
    int n,m,ff[N*N],S,k;
    int findff(int u){return u==ff[u]?u:ff[u]=findff(ff[u]);}
    int _id(int x,int y)
    {
        if(!x||!y||x==n||y==n)return S;
        return x+(y-1)*(n-1);
    }
    struct op
    {
        char s[2];
        int x,y;
        void rd()
        {
            read(x),read(y);
            scanf("%s",s);
        }
    }p[2],o;
    int merge(int u,int v)
    {
        u = findff(u),v = findff(v);
        if(u!=v){ff[u]=v;return 0;}
        return 1;
    }
    
    int main()
    {
        read(n),read(m);
        S=(n-1)*(n-1)+1;
        for(int i=1;i<=(n-1)*(n-1)+1;i++)
            ff[i] = i;
        for(int i=1;i<=m;i++)
        {
            p[0].rd(),p[1].rd();
            o = p[k];
            int u,v,x=o.x,y=o.y;
            if(o.s[0]=='N')u=_id(x-1,y),v=_id(x,y);
            else u=_id(x,y-1),v=_id(x,y);
            k = merge(u,v);
            puts(k?"NIE":"TAK");
        }
        return 0;
    }
    View Code
  • 相关阅读:
    ZZNU 1995: cots' times
    网站后缀名都有哪些
    webstorm运行到服务器(Apache)
    window系统下node.js环境配置
    window系统安装node.js
    网站创建自定义百度地图
    响应式一级到三级导航
    H5插入视频兼容各大浏览器
    phpStudy环境安装
    jquery on和bind
  • 原文地址:https://www.cnblogs.com/LiGuanlin1124/p/10820523.html
Copyright © 2011-2022 走看看