zoukankan      html  css  js  c++  java
  • POJ 1703 带权并查集

    直接解释输入了:
    第一行cases.
    然后是n和m代表有n个人,m个操作
    给你两个空的集合
    每个操作后面跟着俩数
    D操作是说这俩数不在一个集合里。
    A操作问这俩数什么关系
    不能确定:输出Not sure yet.
    在一个集合里:输出In the same gang.
    不在一个集合里:输出In different gangs.
    这题挺像http://poj.org/problem?id=2492同性恋的虫子那道题的。

    // by SiriusRen
    #include <cstdio>
    #include <cstring>
    using namespace std;
    int cases,xx,yy,n,m,f[105000],d[100500];
    char jy,jy1;
    int find(int x){
        if(f[x]==x)return x;
        int y=f[x];
        f[x]=find(f[x]);
        d[x]=(d[x]+d[y])%2;
        return f[x];
    }
    int main(){
        scanf("%d",&cases);
        while(cases--){
            scanf("%d%d",&n,&m);
            for(int i=1;i<=n;i++)f[i]=i;
            memset(d,0,sizeof(d));
            for(int i=1;i<=m;i++){
                scanf("%c%c%d%d",&jy1,&jy,&xx,&yy);
                int fx=find(xx),fy=find(yy);
                if(jy=='A'){
                    if(fx!=fy)puts("Not sure yet.");
                    else if(d[xx]!=d[yy])puts("In different gangs.");
                    else puts("In the same gang.");
                }
                else f[fx]=fy,d[fx]=(d[yy]-d[xx]+1)%2;
            }
        }
    }
    

    这里写图片描述

  • 相关阅读:
    uni-app快速上手
    uni-app快速上手
    什么是uni-app?
    什么是uni-app?
    美颜小程序准备
    美颜小程序准备
    vue的基本使用
    vue的基本使用
    Web前端开发(高级)下册-目录
    Web前端开发(高级)下册-目录
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532416.html
Copyright © 2011-2022 走看看