首页 > 编程语言 >C++题解——格子游戏

C++题解——格子游戏

时间:2023-07-10 11:33:05浏览次数:45  
标签:node 格子 int 题解 C++ 连接 k2 k1 find

题目链接:一本通 TFLSOJ

思路:使用并查集给点连接,如果在连接过程中遇到已连接的点二次连接,就输出

代码:

#include<bits/stdc++.h>
using namespace std;
struct node{
	int x,y;
};
node f[205][205];
int n,m;
node find(node k){
	if(f[k.x][k.y].x==k.x&&f[k.x][k.y].y==k.y)return f[k.x][k.y];
	return f[k.x][k.y]=find(f[k.x][k.y]);
}
void merge(node k1,node k2){
	k1=find(k1);
	k2=find(k2);
	f[k1.x][k1.y]=k2;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			f[i][j].x=i;
			f[i][j].y=j;
		}
	}
	int x,y;
	char c;
	node k1,k2;
	for(int i=1;i<=m;i++){
		cin>>x>>y>>c;
		if(c=='D'){
			k1=find(f[x][y]);
			k2=find(f[x+1][y]);
		}else{
			k1=find(f[x][y]);
			k2=find(f[x][y+1]);
		}
		if(k1.x==k2.x&&k1.y==k2.y){
			cout<<i;
			return 0;
		}else
			merge(k1,k2);
	}
	cout<<"draw";
	return 0;
}

标签:node,格子,int,题解,C++,连接,k2,k1,find
From: https://www.cnblogs.com/NightinGaleCode/p/17540503.html

相关文章

  • #570. 【例4-8】格子游戏 (并查集)
    #570.【例4-8】格子游戏题题题题题题题题题题题题题题分析:并查集解决的是连通性(无向图连通分量)和传递性(家谱关系)问题,并且可以动态的维护。抛开格子不看,任意一个图中,增加一条边形成环当且仅当这条边连接的两点已经联通,于是可以将点分为若干个集合,每个集合对应图中的一个连通块......
  • c/c++程序编译运行全过程
    一.预处理-gcc-E1.进行头文件的替换(执行预处理指令)2.删除注释3.不会检查语法二.编译-gcc-S1.会检查语法2.将C语言代码翻译成对应平台的汇编语言三.汇编-gcc-c将汇编语言翻译成二进制指令四.链接-gcc-o把用到的标准库的函数实现,系统启动代码一并链接到最后生成的可......
  • Windows下安装python2和python3双版本及问题解决
    现在大家常用的桌面操作系统有:Windows、MacOS、ubuntu,其中MacOS和ubuntu上都会自带python。这里我们只介绍下Windows(我用的Win10)环境下的python2.x和python3.x的安装,以及python2.x与python3.x共存时的配置问题。本节内容python下载安装Python2.x安装Python3.x当前存......
  • 华为工程师(王桂林)带你实战C++
    适合人群:有一定的C语言基础或是想提高C++水平的在职人员或是想要从事C、C++开发的绝大多数人你将学到:本课程我以实战为主,课上全部代码均为边讲边手敲,学会此套课程,可以达到一个C++中高级研发者的水平。课程简介:王桂林老师,曾供职于海尔,华为等世界500强企业。现在专职于C++教......
  • 洛谷P1443:马的遍历--题解
    写在前面这是蒟蒻第一篇题解。作为一名没带脑子的初中生的第一篇题解,本题解必定存在诸多错误,给您带来的不便敬请谅解。对于不足之处与错误,还请多多包涵,并欢迎批评指正!本题目来自于洛谷,网址https://www.luogu.com.cn/problem/P1443。非营利性,侵权请联系删除。题目详情马的遍历......
  • [C/C++] 函数
    疑问1、函数结束后,函数栈释放的内容有哪些?2、通过函数修改形参的值怎么实现?值传递还是引用传递?基本类型、数组、结构体有什么区别?3、如果想通过函数对实参进行malloc,为什么必须用二级指针?函数栈空间在一个函数执行完毕后其所占用的内存空间(除了静态和全局变量)统统会被释放......
  • 《C++》容器--deque
    deque双端数组。可以对头尾进行插入和删除操作#define_CRT_SECURE_NO_WARNINGS1#include<iostream>#include<deque>#include<algorithm>usingnamespacestd;voidprintdeque(constdeque<int>&d){ for(deque<int>::const_iteratorit=d.begi......
  • 2023-07-09:给定N、M两个参数, 一共有N个格子,每个格子可以涂上一种颜色,颜色在M种里选, 当
    2023-07-09:给定N、M两个参数,一共有N个格子,每个格子可以涂上一种颜色,颜色在M种里选,当涂满N个格子,并且M种颜色都使用了,叫一种有效方法。求一共有多少种有效方法。1<=N,M<=5000。返回结果比较大,请把结果%1000000007之后返回。答案2023-07-09:这两种算法用于计算涂色的......
  • 【《C++ Primer 第四版》读书笔记】4.2.5-指针和const限定符
    1.指向const对象的指针1.1表现形式constdouble*ptr,constvoid*ptr1.2如何理解无法通过ptr这个指针变量去修改所指向内存区域的值,但是ptr这种指针变量可以重复赋值,指向不同的内存地址注意ptr这个指针变量赋值时,既可以赋值为const类型变量(书中所说的const对象)的地址,也......
  • Seata-server.bat闪退问题解决及Seata快速搭建
    转:Seata-server.bat闪退问题解决及Seata快速搭建 1.4上 部署的话 参考下边的地址:seata部署指南(v1.6.1) 启动seata服务前请先做好配置 ......