海岛帝国:运输资源

【试题描述】

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. 如何将XML文件写入数据库

    将xml文件转成string public string XMLDocumentToString(XmlDocument doc) { MemoryStream stream = new Memory ...

  2. 打印出1,11,21,31,41。。。。。。的shell脚本

    打印出1,11,21,31,41......的shell脚本 方法一:#!/bin/bash ;i<;i=i+));do echo $i #cat -n /etc/services | sed ...

  3. POJ1528问题解答

    #include <iostream>#include <cstdio>#include <cmath> #include <string>#inclu ...

  4. centOS中wget的使用方法

    对于 Linux 用户来说,几乎每天都在使用它. 下面为大家介绍几个有用的 CentOS wget 小技巧,可以让你更加高效而灵活的使用CentOS wget. CentOS wget 使用技巧 $ ...

  5. SSH项目整合教学Eclipse搭建SSH(Struts2+Spring3+Hibernate3)

    这篇博文的目的 尝试搭建一个完整的SSH框架项目. 给以后的自己,也给别人一个参考. 读博文前应该注意: 本文提纲:本文通过一个用户注册的实例讲解SSH的整合.创建Struts项目,整合Hiberna ...

  6. I2C实时时钟rx-8025板卡实际应用

    rx-8025是片外I2C实时时钟,其应用于9260板卡方法如下.总体思想是配置内核添加驱动(I2C驱动,内核已提供的很完备),板级文件添加设备,添加设备文件以应用程序操作. 1. 配置内核 1)I2 ...

  7. [SharpDevelop]菜单状态更新

    方式一 在Idle方法中更新 void OnApplicationIdle(object sender, EventArgs e) { // Use the Idle event to update ...

  8. XCODE中的蓝色文件夹与黄色文件夹

    XCODE中的蓝色文件夹与黄色文件夹 黄色文件夹比较常见 - group , 在XCODE中以文件夹的形式存在,有层次感,但是实际文件在工程下是散乱的,没有层级结构.是XCODE中虚拟目录. 蓝色文件 ...

  9. Java基础之集合框架——在文件中存储地图(TryPhoneBook2)

    控制台程序. import java.io.*; public class Person implements Comparable<Person>, Serializable { // ...

  10. Swift游戏实战-跑酷熊猫 04 熊猫的跳和滚的动作

    这节内容,我们利用上一节学过的内容,给熊猫添加跳和滚动的动作.同时通过重载touchBegan方法来响应动作.切换跑,跳,滚. 要点: 通过序列帧纹理产生动画: SKAction.animatWith ...