首页 > 其他分享 >POJ 1703 Find them, Catch them(种类并查集)

POJ 1703 Find them, Catch them(种类并查集)

时间:2023-04-13 17:41:36浏览次数:48  
标签:bin them 1703 int scanf 查集 rank POJ include

题目地址:POJ 1703

种类并查集水题。

代码如下:

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include <set>
#include <algorithm>

using namespace std;
int bin[600000], rank[600000];
int find1(int x)
{
    int y;
    if(bin[x]!=x)
    {
        y=bin[x];
        bin[x]=find1(bin[x]);
        rank[x]=rank[x]^rank[y];
    }
    return bin[x];
}
int main()
{
    int t, n, m, i, a, b, f1, f2;
    char c;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&m);
        for(i=1;i<=n;i++)
        {
            bin[i]=i;
            rank[i]=0;
        }
        while(m--)
        {
            getchar();
            scanf("%c%d%d",&c,&a,&b);
            f1=find1(a);
            f2=find1(b);
            if(c=='D')
            {
                if(f1!=f2)
                {
                    bin[f2]=f1;
                    rank[f2]=rank[a]^rank[b]^1;
                }
            }
            else
            {
                if(f1!=f2)
                {
                    printf("Not sure yet.\n");
                }
                else
                {
                    if(rank[a]!=rank[b])
                        puts("In different gangs.");
                    else
                        puts("In the same gang.");
                }
            }
        }
    }
    return 0;
}


标签:bin,them,1703,int,scanf,查集,rank,POJ,include
From: https://blog.51cto.com/u_16070138/6188245

相关文章

  • POJ 1988 Cube Stacking (种类并查集)
    题目地址:POJ1988   这道题的查找合并的方法都能想的到,就是一点没想到,我一直天真的以为查询的时候,输入后能马上输出,这样的话在合并的时候就要所有的结点值都要算出来,但是经过路径压缩之后,没办法全部都处理到,如果不压缩妥妥的TLE。。于是看了看网上的题解。才发现自己是多......
  • HDU 1856 More is better(并查集+离散化)
    题目地址:HDU1856水题。由于标号范围太大,而数据数只有10w,所以要先进行离散化。然后就是裸的并查集了。代码如下:#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<stdlib.h>#include<math.h>#include<ctype.h>#include<que......
  • HDU 2473 Junk-Mail Filter(并查集的删除操作)
    题目地址:HDU2473这题以前碰到过,没做出来。。现在又做了做,还是没做出来。。、、这题涉及到并查集的删除操作。想到了设一个虚节点,但是我把虚节点设为了要删除的点的父节点,一直是栈溢出,目测是无限递归了。看了看别人的做法,原来只要建一个映射就可以了,虚节点是作为的新的映射,每......
  • HDU 2120 Ice_cream's world I(并查集)
    题目地址:HDU2120这题虽然字数不多,但就是看不懂。。意思是求最多有多少个被墙围起来的区域。显然就是求环的个数。然后用并查集求环个数就可以了。代码如下:#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<stdlib.h>#include<math......
  • Wolfram Mathematica 大师班:从初学者到专家
    WolframMathematica大师班:从初学者到专家通过实例学习:机器学习、自然科学、统计学、经济、语言学和媒体的巧妙编程课程英文名:WolframMathematicaMasterclassfromBeginnertoExpert此视频教程共8.06GB,中英双语字幕,画质清晰无水印,源码附件全课程地址:https://xueshu.fun/......
  • HDU - 3081 Marriage Match II(二分图最大匹配 + 并查集)
    题目大意:有n个男生n个女生,现在要求将所有的男女配对,所有的男女都配对的话,算该轮游戏结束了。接着另一轮游戏开始,还是男女配对,但是配对的男女不能是之前配对过的。问这游戏能玩多少轮男女能配对的条件如下1.男女未曾吵架过。2.如果两个女的是朋友,那么另一个女的男朋友可以和......
  • android自定义Activity窗口大小(theme运用)
    正常情况下,我们开发的应用程序都会上占满整个屏幕,那么怎么样才能开发出自定义窗口大小的的程序呢?如下图所示:实现起来非常简单。第一步,创建一个背景配置文件float_box.xml,放到res/drawable下,如下所示(如看不懂可查看本站:):<?xmlversion="1.0"encoding="utf-8"......
  • 算法题-朋友圈-并查集
    朋友圈现在有105个用户,编号为1-105,现在已知有m对关系,每一对关系给你两个数x和y,代表编号为x的用户和编号为y的用户是在一个圈子中,例如:A和B在一个圈子中,B和C在一个圈子中,那么A,B,C就在一个圈子中。现在想知道最多的一个圈子内有多少个用户。数据范围:......
  • 并查集
    CF371DVessels点击查看题目点击查看思路定义一个权值并查集,权值保存这个集合还可以存下多少水。如果这个集合可以存放的水已经小于要装入的水,就将这个集合与下一个集合合并。否则,直接把这个集合可以存放的水减去要装入的水的体积。点击查看代码#include<bits/stdc+......
  • 并查集
    并查集的定义并查集是一种树型的数据结构,用于处理一些不相交集合(disjointsets)的合并及查询问题。常常在使用中以森林来表示。——百度百科并查集,顾名思义,支持以下两种操作操作:并(Union):把两个不相交的集合合并为一个集合。查(Find):查询两个元素是否在同一个集合中。并......