★实验任务

A国有 N个城市,这些城市编号为 1到 N,有一天,他们调查出恐怖分子在每个城市中都安放了炸弹,于是他们给炸弹也编上了序号,第 i 个城市里的炸弹编号为 i。现在他们想把这些炸弹转移,以便于销毁炸弹。

由于炸弹是通过不同人转移的,所以需要一个指挥部门来记录转移炸弹的信息,以便于有些人要查询这些信息。我们有两个操作:

1.将 a 炸弹目前所在城市中所有的炸弹转移到 b 炸弹所在的城市。

2.询问 a 炸弹目前在哪个城市编号和这个城市中有炸弹个数。

★数据输入

输入第一行包含两个数 N,Q(1<=N<=500000 , 1<=Q<=120000)。分别表示城市的个数和操作数。

接下来有 Q 行,每行表示一个操作,第一种操作输入格式为 1 a b,第二种操作输入格式为 2 a。(1<=a,b<=N)

★数据输出

对于第一个操作,如果两个炸弹在同一个城市里,输出“ERROR”,并不执行此操作。否则执行操作并不输出任何东西。

对于第二种操作,输出一行两个数表示炸弹所在的城市编号和该城市中炸弹个数,用一个空格分开。

输入示例1

3 3
1 1 2
1 3 2
2 2

输出示例1

2 3

输入示例2

3 5
1 1 2
1 2 1
2 1
1 1 3
2 1

输出示例2

ERROR
2 2
3 3

思路:本题用到并查集的思想,将题目给的两个操作看作是并和查,炸弹作为集合,初始时每个炸弹都属于自己的集合。

代码:

#pragma GCC optimize(2)      //开O2优化
#include <cstdio>
#define MAX 500000int Boomb[MAX]; //初始化为-1
void BoombInit(int size)
{for(int i=1; i<=size; i++){Boomb[i] = -1;} return ;
}//查找x所在的城市
int UFFind(int root)
{ if(Boomb[root]<0)      //如果父结点小于零  那么说明 已经是根节点 那么根就在自己 return root; int son, tmp; son = root; while(Boomb[root]>=0){  //寻找城市  root = Boomb[root]; } //路径压缩  再从最开始到根  while(son!=root){ tmp = Boomb[son]; //原本的上级  Boomb[son] = root; //将上级直接指向root  son = tmp;  }  return root;   //返回树根
}//a合并到b
void UFUnion(int a, int b)
{ a = UFFind(a);   //找这俩的爸爸 如果相等 就返回 b = UFFind(b);if(a==b){printf("ERROR\n");return ;            //已经在同一座城市里 }Boomb[b]+=Boomb[a];      //此时b要并到a上 那么a 要加上b中的炸弹个数 Boomb[a] = b;                //然后再将b的父亲改为areturn ;       //成功合并
}
int main(void)
{ int N, Q; int a, b, instruct; scanf("%d %d", &N, &Q); BoombInit(N);while(Q--){ scanf("%d", &instruct); if(instruct==1){ scanf("%d %d", &a, &b); UFUnion(a, b); }else{ scanf("%d", &a); int tmp = UFFind(a);printf("%d %d\n", tmp, -Boomb[tmp]); } }return 0;
}

数据结构与算法实验题 9.8 转移炸弹相关推荐

  1. 数据结构与算法实验题 4.2 Who is the strongest

    数据结构与算法实验题 4.2 Who is the strongest ★实验任务 在神奇的魔法世界,召唤师召唤了一群的魁偶.这些魁偶排成一排,每个魁偶都有一个 战斗值.现在该召唤师有一个技能,该技能 ...

  2. 数据结构与算法实验题 6.1 鼹鼠掘土挑战赛

    数据结构与算法实验题 6..1 鼹鼠掘土挑战赛 ★实验任务 在潘多拉星的哈利路亚山上,生活着许多鼹鼠矿工,它们同属于潘多拉矿业公司哈利路 亚分公司.尽管在潘多拉星最美丽壮阔的地方工作,是一件十分让普通 ...

  3. 数据结构与算法实验题 10.1 神谕者

    ★实验任务  众所周知,dota 中神谕者的大招可以抵挡所有伤害,但是当大招结束时会一次性结算所有伤害.神谕者在大招期间已经遭受了 n 次伤害,他现在希望知道自己所遭受伤害中的第 k 小伤害值,但是他 ...

  4. 数据结构与算法实验题 7.2 连环计

    问题描述: 赤壁之战前夕,庞统向周瑜献连环计,瑜设计使蒋干邀庞统到曹营.操与统同观营寨,又共论兵法.统对答如流使操敬服.统乘机提出:大江中风浪不息使北兵易生疾病.可将大 小船配搭,首尾用铁环连锁,铺阔 ...

  5. 数据结构与算法实验题7.2 连环计

    问题描述: 赤壁之战前夕,庞统向周瑜献连环计,瑜设计使蒋干邀庞统到曹营.操与统同观营寨, 又共论兵法.统对答如流使操敬服.统乘机提出:大江中风浪不息使北兵易生疾病.可将大 小船配搭,首尾用铁环连锁,铺 ...

  6. c语言编写队列元素逆置,数据结构与算法实验—利用栈逆置队列元素.doc

    数据结构与算法实验-利用栈逆置队列元素 利用栈逆置队列元素实验报告 通信1204班 谢崇赟 实验名称 利用堆栈将队列中的元素逆置 实验目的 会定义顺序栈和链栈的结点类型. 掌握栈的插入和删除结点在操作 ...

  7. Ants (POJNo.1852)--数据结构与算法刷题记录

    数据结构与算法刷题记录1 时间:4.28 这是第一次用CSDN来记录自己的学习成果,在此留下纪念,希望自己能够坚持下去,变得更强. 本次学习记录来源于<挑战程序设计竞赛(第2版)> Ant ...

  8. 一夜登顶GitHub!字节内网数据结构与算法刷题笔记,看完直呼卧槽

    网络上流传着一句段子"程序员两条腿,一条是算法,一条是英文,想跑的更远,这两条腿都不能弱".英文,我们暂且不谈,我们先来谈谈算法. 算法之难,在于将精巧的逻辑,通过合适的数据结构, ...

  9. 面试题库 之 数据结构与算法 100题

    1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表. 要求不能创建任何新的结点,只调整指针的指向. 10 / \ 6 14 / \ / \ 4 8 ...

最新文章

  1. RPM vs SRPM
  2. 基于框架的应用系统的质量属性
  3. 软考 - 法律法规 标准化
  4. C. Valera and Elections DFS
  5. #CSP 201709-1 打酱油
  6. 杀毒行业暴利?8条杀毒行业之我见
  7. [Android6.0][RK3399] PCIe 接口 4G模块 EC20 调试记录
  8. 独立树Graph Coloringhttp://poj.org/problem?id=1419最大团问题
  9. 转 Java多线程中Sleep与Wait的区别
  10. flash builder 4.6 的破解安装
  11. 安卓psp模拟器哪个好_psp模拟器安卓完美版下载_psp模拟器完美版手机版下载_玩游戏网...
  12. kmplayer音轨切换(换配音)
  13. XMU 1614 刘备闯三国之三顾茅庐(二) 【逆向思维+二维并查集】
  14. PhotoSweeper X for Mac(重复照片快速清理软件)
  15. 通过英文剧集、电影学单词的小工具
  16. 开启xmp1还是2_英雄联盟手游高帧率模式怎么开启-高帧率模式开启方法
  17. 台湾--身份证(本国人)正则表达式
  18. SecureFX中文乱码,而SecureCRT中文显示正常
  19. 现在的网页该不该兼容IE6/7
  20. php字符串转数组函数,php字符串转数组

热门文章

  1. 孙溟㠭凿印《猛击一掌》
  2. 华为ensp NAT技术地址转换
  3. idea中启动vue项目
  4. 记一次方案设计的前瞻性
  5. mssql 计划怎每隔n秒_4个步骤,教你定制超科学的跑步计划
  6. 如何使用群晖nas快速收集多份文件?
  7. 微信支付平台设置及如何获取微信支付所需参数
  8. 计算机考试半角全角,全角和半角怎么切换?是什么意思?全角半角的区别
  9. js-如何获取class对象
  10. 微信公众号三方平台开发【帐号注册、平台创建】