【并查集专题】格子游戏

题目描述

Alice和Bob玩了一个古老的游戏:首先画一个n * n的点阵(下图n = 3) 接着,他们两个轮流在相邻的点之间画上红边和蓝边:

直到围成一个封闭的圈(面积不必为1)为止,“封圈”的那个人就是赢家。因为棋盘实在是太大了(n <= 200),他们的游戏实在是太长了!他们甚至在游戏中都不知道谁赢得了游戏。于是请你写一个程序,帮助他们计算他们是否结束了游戏?

输入

输入数据第一行为两个整数n和m。m表示一共画了m条线。以后m行,每行首先有两个数字(x, y),代表了画线的起点坐标,接着用空格隔开一个字符,假如字符是"D ",则是向下连一条边,如果是"R "就是向右连一条边。输入数据不会有重复的边且保证正确。

输出

输出一行:在第几步的时候结束。假如m步之后也没有结束,则输出一行“draw”。

样例输入

3 5
1 1 D
1 1 R
1 2 D
2 1 R
2 2 D

样例输出

4

数据范围限制

这是一道并查集的题。众所周知,树里面是没有环的。所以在“封圈”之前,棋盘上的画出来的图,都是若干棵树。这道题的重点是如何判断是否“封圈”,如果要连上的两个节点都源自同一棵树(可以是祖先与孩子,也可以是兄弟),那就一定会形成一个环。如果源自不同的树,那就连起来,因为它们一定不会形成环。

#include<cstdio>
int n,m,f[40005],x,y;
char c;
int find(int x)//查找根节点
{if(x!=f[x]) f[x]=find(f[x]);return f[x];
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n*n;i++)//初始化f[i]=i;for(int i=1;i<=m;i++){scanf("%d%d %c",&x,&y,&c);int r=(x-1)*n+y,l;//给两个要连的节点编号if(c=='D')l=x*n+y;elsel=(x-1)*n+y+1;int X=find(r),Y=find(l);if(X==Y)//判断是否源自同一棵树{printf("%d",i);return 0;}else f[X]=Y;}printf("draw");return 0;
}

不见不散

【并查集专题】格子游戏相关推荐

  1. 并查集专题(亲戚,格子游戏,银河英雄传说)

    文章目录 序言 正文 亲戚 时间限制: 1000 ms 空间限制: 262144 KB 题目描述 输入 输出 样例输入 样例输出 讲解 Wrong Answer Code Accepted Code ...

  2. 并查集专题练习:好朋友(未完待续)

    有空再把题目补上 输入样例1 4 2 1 4 2 3 样例输出1 2 输入样例2 7 5 1 2 2 3 3 1 1 4 5 6 输出样例2 3 解题思路: 1. 这题放在并查集的专题后面,有查找也有 ...

  3. hdu1198 Farm Irrigation —— dfs or 并查集

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1198 dfs: 1 #include<cstdio>//hdu1198 dfs 2 #in ...

  4. 【Python数据结构】——并查集的实现(查找、合并、集合、实例)

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/7/30 23:12 # @Author : @linlianqin # @S ...

  5. poj 1456 Supermarket (贪心, 并查集)

    链接: http://poj.org/problem?id=1456 题目: Description A supermarket has a set Prod of products on sale. ...

  6. 并查集——格子游戏(简单应用)

    传送门:格子游戏 思路:将图上的每一个点都用他们的坐标转化成一个具体的数字表示做一个点,如 (x,y)可以表示成a= x*n+y.每次向右和向下扩展的时候就相当于将两个点所在的并查集树合并,在合并之前 ...

  7. 2015 UESTC 数据结构专题H题 秋实大哥打游戏 带权并查集

    秋实大哥打游戏 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Descr ...

  8. 格子游戏(并查集)——信奥一本通

    题目: Alice和Bob玩了一个古老的游戏:首先画一个n * n的点阵(下图n = 3)   接着,他们两个轮流在相邻的点之间画上红边和蓝边: 直到围成一个封闭的圈(面积不必为1)为止," ...

  9. 并查集算法总结专题训练

    并查集算法总结&专题训练 1.概述 2.模板 3.例题 1.入门题: 2.与别的算法结合: 3.考思维的题: 4.二维转一维: 5.扩展域并查集&边带权并查集: 4.总结 1.概述 并 ...

最新文章

  1. 移动磁盘由于IO设备错误,要怎样寻回文件
  2. 高级停靠(Dock)技术的实现
  3. git-ssh-keygen
  4. Aiiage Camp Day4 A Board game
  5. HDU4349--Xiao Ming's Hope(数论)
  6. javaWeb项目中web.xml的xsd( XML Schemas Definition)文件
  7. structs 中过滤器问题
  8. Win10投影到此电脑用不了
  9. java 计算月份和日期
  10. YOLOv3目标检测算法——通俗易懂的解析
  11. matlab 图像输入和显示函数
  12. cocos2dx 植物大战僵尸 18 土豆雷
  13. STK之Commu模块之三仿真卫星通信链路参数计算
  14. Geekbench跑分及功耗对比:A15 麒麟9000 高通8Gen1 三星exynos2100 天玑1200
  15. 作为优秀的DBA,究竟需要掌握多少种数据库?
  16. JS工具库之Lodash用法005 _.difference(),_.differenceBy()_.differenceWith()
  17. 给李娜的经纪人点个赞
  18. 软件测试面试必备网络知识要点
  19. C++:寻找250(团体程序设计天梯赛)
  20. 期权在matlab中的论文,[转载]期权定价的Matlab实现(以欧式看涨期权为例)

热门文章

  1. CAD打印这些说法都对吗
  2. excel函数应用:被大多数人冷遇的CHOOSE函数
  3. 未来5年手机外壳大预测,3D玻璃将成中高端主流配置
  4. linux7注销命令,linux 注销指令是什么?
  5. php中单例和工厂模式,PHP单例模式和工厂模式小记!
  6. Eureka更改主机的实例ID(Instance ID)
  7. PHP拆分中文字符串,逐个字打印,中文提取
  8. 正版推荐 - Fences 4 – 让你的桌面更加整洁与高效的桌面图标文件整理工具软件!
  9. 六年级下学期计算机课教学进度,六年级下册数学教学计划及进度表
  10. Matlab导出动态链接库dll