海岛帝国:运输资源

【试题描述】

YSF考虑到“药师傅”帝国现在资源极度不平均,于是,商讨启用南水北调工程。YZM为首席工程师。现在,YSF由于工作紧张,准备军用物资和民用物资。但他要时时关注运输工程动态,因为货物很珍贵,是最新发明的T-2500智能生产行业制造机。用于工、农业生产,而且技术先进,数量众多,不能落入恐怖分子之手。YSF要YZM向他随时汇报货物走向、货物地点,以防万一恐怖分子袭击。脾气暴躁的YZM一向不爱干这种统筹规划的杂活。所以,YZM需要你来帮他编一个小程序,来随时给多疑的YSF汇报。(程序当然是有薪水的,至于多少嘛……可以找YSF,LJX面谈)

【输入要求】

* 第一行:两个数n,m,表示一共有n个制造机,m条操作。操作有两种。

* 接下来的m行:T a b 表示把a制造机所在的城里的所有龙珠运到b所在的城里

Q a 表示对a的询问,要求输出x a所在的城, y a所在的城里一共有多少个机器,z a经过几次到达现在所在的城的。

【输出要求】

* 及每次Q查询的答案,回车!回车!回车!

【输入实例】

3 4
Q 1
T 3 2
Q 2
Q 3

【输出实例】

1 1 0
2 2 0
2 2 1

【其他说明】

所有数据不大于40

【试题分析】

第一眼上来就看到合并,查询等一些操作字符了,第一反应貌似是线段树?可惜,如果一上来这么分析,而不考虑麻烦程度的话,那我也就没话可说了。线段树操作这题貌似是能解决,但是本人不怎么会线段树,所以我就又蒙了个模拟线段树的并查集算法?呵呵呵。因为我想都是树形结构。所以就套了一发,其实本来就是一样的啊。定义parent同并查集的一般操作,step表示经过几步到达现在所在的城,size表示该城里的龙珠数。上回讲解并查集时提到了其它多种操作:Union。具体代码如下:

 void Union(int a,int b)
{
int pa=find(a);
int pb=find(b);
par[pa]=pb;
size[pb]+=size[pa];
step[pa]++;
}

当然,定义初值要按题意定义:

 void init(int n)
{
for(int i=;i<=n;i++)
{
par[i]=i;
step[i]=;
size[i]=;
}
}

【代码如下】

 #include <cstdio>
#include <cstring>
using namespace std;
#define MAX 10
int par[MAX],step[MAX],size[MAX];
void init(int n)
{
for(int i=;i<=n;i++)
{
par[i]=i;
step[i]=;
size[i]=;
}
} int find(int x)
{
if(x==par[x]) return x;
int tmp=par[x];
par[x]=find(tmp);
step[x]+=step[tmp];
return par[x];
} void Union(int a,int b)
{
int pa=find(a);
int pb=find(b);
par[pa]=pb;
size[pb]+=size[pa];
step[pa]++;
} int main()
{
int T,n,m,a,b,t=;
scanf("%d%d",&n,&m);
init(n);
for(int i=;i<m;i++)
{
char move;
getchar();
move=getchar();
if(move=='T')
{
scanf("%d%d",&a,&b);
Union(a,b);
}
else
{
scanf("%d",&a);
int pa=find(a);
printf("%d %d %d\n",pa,size[pa],step[a]);
}
}
}

【海岛帝国系列赛】No.3 海岛帝国:运输资源的更多相关文章

  1. 【海岛帝国系列赛】No.5 海岛帝国:独立之战

    50229234海岛帝国:独立之战 [试题描述] 恐怖分子多年来一直如饥似渴地渴求“药师傅”帝国,但是,“里脊肉”BANNIE时刻在守护着这一方水土.从而使帝国日益强大.如今,BANNIE由于在 “牡 ...

  2. 【海岛帝国系列赛】No.4 海岛帝国:LYF的太空运输站

    50212228海岛帝国:LYF的太空运输站 [试题描述] 最近,“购物券”WHT在“药师傅”帝国资源大会上提出了“SSTS”太空运输站计划.由于恐怖分子前些日子刚猖狂完,炸毁高楼无数,YSF不得不执 ...

  3. 【海岛帝国系列赛】No.7 海岛帝国:神圣之日

    50237242海岛帝国:神圣之日 [试题描述] 战争持续九个月了.“购物券”WHT的军队还在跟恐怖分子僵持着.WHT和LJX已经向“公务员”告急,情况不宜乐观.YSF为守护帝国决定打开“够累 的”星 ...

  4. 【海岛帝国系列赛】No.6 海岛帝国:战争前线

    50234237海岛帝国:战争前线 [试题描述] 总指挥官WHT出神入化的计谋虽然大有用武之地,但是聪明的恐怖分子们采取了城市核武器防御系统,可以有效地抵制WHT的炸弹.YSF对此头痛不已,因此 召开 ...

  5. 【海岛帝国系列赛】No.2 海岛帝国:“落汤鸡”市的黑帮危机

    50200210海岛帝国:“落汤鸡”市的黑帮危机 [试题描述] 近几天,犯罪分子发现“药师傅”帝国的警力约等于0.(请见YSF的海岛帝国)于是开始猖狂了起来.他们选择了依山靠水(农村?)的“落汤鸡”市 ...

  6. 【海岛帝国系列赛】No.1 海岛帝国:诞辰之日

     50111117海岛帝国:诞辰之日 [试题描述] YSF自从上次“被盗投降”完(带着一大堆债)回去以后,YSF对“海盗”怀念至今,他想要建立一个“药师傅”海岛帝国. 今天,他要像“管理部”那样去探寻 ...

  7. 帝国时代II 高清版 steam 4.4 字体替换 微软雅黑

    其实默认的中文字体算是中规中矩吧,但是我并不喜欢 从昨天开始就想着换 于是我就开始搜索帝国时代2的游戏目录的资源,马上就锁定到了\Steam\steamapps\common\Age2HD\resou ...

  8. 帝国cms7.0忘记后台管理账户用户名密码

    最近刚登陆以前的网站,但是发现自己的后台管理用户名密码已经忘记,于是到帝国cms论坛里面找了一下解决方案,成功解决问题.特此分享一下解决成功经验. 原帖地址:http://bbs.phome.net/ ...

  9. Java开发笔记(四)Java帝国的度量衡

    秦始皇统一中国之后,实行“书同文,车同轨”,把货币和各种度量衡都统一起来,从而缔造了一个秩序井然的帝国.既然统一度量衡是每个帝国都要做的事情,Java帝国也不例外,对于人生地不熟的初学者来说,只有认识 ...

随机推荐

  1. [LeetCode]题解(python):035-Search Insert Position

    题目来源 https://leetcode.com/problems/search-insert-position/ Given a sorted array and a target value, ...

  2. Mac废纸篓 不能完全清空的有效解决方法

    摘自:http://www.neonan.com/articles/5582 对于苹果用户来说, 可能都会遇到过这样的情况(尽管这种情况是不常出现的!), Mac OS X系统突然出现一些顽固的文件家 ...

  3. Excl 的一些用法--如何给很多列赋同一个值

    1.用鼠标选定要负责的列(多列) 2.在处填写值 3.Ctrl+Enter

  4. .NET基础加强,找工作之前可以看看这些............

    .NET基础知识加强: 1  变量命名规则:骆驼命名法:第一个字母小写之后的首字母大写,[对于方法名和类名首字母大写]→培养良好的命名规范. 2  构造函数:没有返回值,方法名和类名相同,每个类中都有 ...

  5. iOS 证书及配置文件介绍

    1.Certification(证书) 证书是对电脑开发资格的认证,每个开发者帐号有一套,分为两种: 1)Developer Certification(开发证书) 安装在电脑上提供权限:开发人员通过 ...

  6. 使用openvswitch实现跨主机docker容器互联

    安装openvswitch的步骤请参考上一篇文章:http://www.cnblogs.com/xkops/p/5568167.html 环境:192.168.3.201 node1192.168.3 ...

  7. SWIFT 通过字符串创建相关的类

    import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: ...

  8. ios推送

    1. ios 在杀掉app后,只能接受到系统通知,JPUSH自定义消息不能接受到.系统通知经过实验只能接收到50左右个汉字. 2. 实现方案: 推送的时候,JPUSH推送一个消息,App客户端获取到数 ...

  9. throw 子句

    throws是声明方法时抛出可能出现的异常,但不能捕获异常,也就是说并不直接处理异常,而是把它向上传递.其格式如下: 方法声明 throws 异常类名列表 若一个方法声明抛出异常,则表示该方法可能会抛 ...

  10. Dropbox能火,为何它的中国同行不能火?

    http://tech.163.com/15/0510/11/AP8II63H000915BF.html Dropbox能火,为何它的中国同行不能火? 2015-05-10 11:33:55 来源:  ...