首页 > 其他分享 >高级数据结构-并查集plus(更新中。。。

高级数据结构-并查集plus(更新中。。。

时间:2024-04-08 12:01:15浏览次数:24  
标签:pre int fy 查集 fx flag plus 数据结构 root

格子游戏

题目链接:格子游戏

思路:首先围成一个闭环的时候,两个点一定有边相连,那么可以把这两个点通过并查集连在一个连通块里面,如果两个点的父亲相同,那么就形成闭环。同时,为了方便可以将二维的图转化成一维的进行计算,k=x*n+y,x,y要从0开始统计。

代码附上:

#include <bits/stdc++.h>
using namespace std;
const int N =1e5+5;
int n,m;
int pre[N];

int root(int x){
    return pre[x]=(pre[x]==x)?x:root(pre[x]);
}

int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin>>n>>m;
    for(int i=0;i<=n*n;i++)pre[i]=i;
    int ans=0;
    bool flag = true;
    while(m--){
        ans++;
        char dir;
        int x,y;cin>>x>>y>>dir;
        x--,y--;
        int k=x*n+y;
        if(dir=='D'){
            int p=(x+1)*n+y;
            int fx=root(k);
            int fy=root(p);
            if(fx!=fy){
                pre[fx]=fy;
            }
            else{
                flag = false;
                break;
            }
        }
        else {
            int p=x*n+y+1;
            int fx=root(k);
            int fy=root(p);
            if(fx!=fy){
                pre[fx]=fy;
            }
            else {
                flag = false;
                break;
            }
        }
    }

    if(flag)cout<<"draw"<<"\n";
    else cout<<ans<<"\n";
    return 0;
}

标签:pre,int,fy,查集,fx,flag,plus,数据结构,root
From: https://blog.csdn.net/2302_81761369/article/details/137502832

相关文章

  • 【学习笔记】基础数据结构:猫树
    猫树是线段树的一个特殊版本,猫树不再支持修改操作,类似\(\text{ST}\)表猫树支持高速区间查询,每次查询都只需要进行\(1\)次合并操作,设单次合并操作的复杂度为\(O(k)\),建立猫树的复杂度是\(O(kn\logn)\)的,而查询的复杂度是\(O(k)\)的一般单次查询的复杂度是\(O(1)\),所......
  • 【数据结构(二)】顺序表与ArrayList
    ❣博主主页:33的博客❣▶文章专栏分类:数据结构◀......
  • 数据结构之二叉树 - 超详细的教程,手把手教你认识并运用二叉树
    目录1.树形结构(了解)1.1树形结构的概念(重要)1.2 树的表示形式(了解)1.3 树的应用2.二叉树(重点)2.1概念2.2两种特殊的二叉树2.3二叉树的性质2.4二叉树的存储2.5二叉树的基本操作2.5.1二叉树的遍历1.前序遍历2.中序遍历3.后序遍历4.层序遍历2.5.2......
  • 数据结构之顺序表
    目录一、顺序表源代码1.1SeqList.h1.2SeqList.c二、顺序表的应用2.1Contact.h2.2Contact.c2.3SeqList.h2.4SeqList.c2.5main.c一、顺序表源代码顺序表的底层实现为数组,源代码以整形数据为例,使用C语言编写1.1SeqList.htypedefintSLDataType;//动态顺......
  • java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus
    鸿鹄工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的要......
  • java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus
     鸿鹄工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的......
  • 并查集——蓝桥杯备赛【python】
    一、合根植物试题链接:[蓝桥杯2017国C]合根植物问题描述星球的一个种植园,被分成m×n个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小......
  • 并查集解题思路
    概述并查集主要是解决以下几种问题的:各节点之间的关系某节点和它祖先之间的关系种类朴素并查集,一个集合的信息可以存储在它的祖先节点上。带权并查集,维护的是某节点与它祖先的关系。扩展域并查集(种类并查集),本质是多开几倍空间的朴素并查集,维护的是各个阵营之间的关系,且......
  • 并查集学习笔记
    并查集学习笔记本质上还是一个复习笔记。考虑这样一个问题:给出\(x,y\),合并\(x,y\)所在集合。给出\(x,y\),查询\(x,y\)是否在同一集合内。我们把集合当成一棵树,两个点有连边就表示他们在同一个集合内。这棵树的根节点就是这个集合的“老大”,也就是这个集合里面的......
  • 数据结构 第八章(排序算法)【上】
    写在前面:本系列笔记主要以《数据结构(C语言版)》为参考(本章部分图片来源于王道),结合下方视频教程对数据结构的相关知识点进行梳理。所有代码块使用的都是C语言,如有错误欢迎指出。视频链接:第01周a--前言_哔哩哔哩_bilibili基数排序部分的代码参考了一位小伙伴分享的代码,特此说明一......