Problem 2057 家谱

Accept: 129    Submit: 356
Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

由于计划生育的实行,我们以及将来几代人都会是独生子女,即每对夫妇只会有一个孩子。那么给你XXXX年某人的一张树形族谱,你能指出其中任意两人的关系吗?

 Input

输入数据第一行一个整数T表示有T组数据。

每组数据第一行一个正整数N (2 < N < 10000 ,且N为奇数),表示族谱中有N个家族成员。

接下来N/2行,每行三个整数a b c,表示a的父亲是b,a的母亲是c。数据保证所给的是一棵树,家族成员的编号为1到N。

接下来一行一个正整数M (0 < M < 100),表示有M询问。

接下来M行,每行两个整数x y (x!=y),表示询问x y的关系。

 Output

对于每一个询问,输出一行。

若x是y的祖辈,则输出:

0 S

若y是x的祖辈,则输出:

1 S

若都不是以上两种情况,则输出:

Relative

前两种情况中的S表示一个由大写字母F和M组成的字符串,F表示父亲,M表示母亲,表示前者是后者的XXX。例如:

0 FMM 表示x是y的父亲的母亲的母亲。

1 MFMF 表示y是x的母亲的父亲的母亲的父亲。

以此类推。

 Sample Input

1
9
3 6 7
5 8 9
1 2 3
2 4 5
3
8 2
1 7
3 9

 Sample Output

0 MF
1 MM
Relative
 
 
搜索一下就ok了
 
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#define REP(i,n) for(i=0;i<(n);++i)
#define FOR(i,n) for(i=1;i<=(n);++i)
using namespace std;
const int N = ;
typedef pair<int,int> pii; struct _node{
int fa,lc,rc;
char val;
}; _node mes[N];
int n,sz;
char ans[N]; void add(int f,int l,int r)
{
mes[f].lc = l;
mes[f].rc = r;
mes[l].fa = mes[r].fa = f;
mes[l].val = 'F';
mes[r].val = 'M';
} int dfs(int s,int t,int cur)
{
if(s==t)
{
ans[cur]='\0';
return cur;
}
int lc=mes[s].lc,rc=mes[s].rc,k;
if(lc)
{
ans[cur]='F';
if(k=dfs(lc,t,cur+)) return k;
}
if(rc)
{
ans[cur]='M';
if(k=dfs(rc,t,cur+)) return k;
}
return ;
} void run()
{
int a,b,c,m,k;
scanf("%d",&n);
memset(mes,,sizeof(mes));
for(int i=;i<=n/;++i)
{
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
}
scanf("%d",&m);
while(m--)
{
scanf("%d%d",&a,&b);
if(k=dfs(a,b,))
{
printf("1 %s\n",ans);
// print();
}
else if(k=dfs(b,a,))
{
printf("0 %s\n",ans);
}
else puts("Relative");
}
} int main()
{
int _;
scanf("%d",&_);
while(_--)
run();
return ;
}

FZU 2057 家谱(dfs)的更多相关文章

  1. F - Change FZU - 2277 (DFS序+线段树)

    题目链接: F - Change FZU - 2277 题目大意: 题意: 给定一棵根为1, n个结点的树. 有q个操作,有两种不同的操作 (1) 1 v k x : a[v] += x, a[v ' ...

  2. FZU 2277 Change(dfs序+树状数组)

    Problem Description There is a rooted tree with n nodes, number from 1-n. Root’s number is 1.Each no ...

  3. ACM: FZU 2107 Hua Rong Dao - DFS - 暴力

    FZU 2107 Hua Rong Dao Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I6 ...

  4. ACM: FZU 2150 Fire Game - DFS+BFS+枝剪 或者 纯BFS+枝剪

    FZU 2150 Fire Game Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  5. FZU 2108(dfs模拟,大数取余)

     K Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Pr ...

  6. 福州月赛2057 DFS

    题意:告诉你族谱,然后Q条查询s和t的关系,妈妈输出M,爸爸输出F: 题目地址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=78233# ...

  7. FZU 2176 easy problem (DFS序+树状数组)

    对于一颗树,dfs遍历为每个节点标号,在进入一个树是标号和在遍历完这个树的子树后标号,那么子树所有的标号都在这两个数之间,是一个连续的区间.(好神奇~~~) 这样每次操作一个结点的子树时,在每个点的开 ...

  8. FZU 2150 Fire Game (bfs+dfs)

    Problem Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M board ...

  9. FZU oj 2277 Change 树状数组+dfs序

    Problem 2277 Change Time Limit: 2000 mSec    Memory Limit : 262144 KB  Problem Description There is ...

随机推荐

  1. Java泛型【转】

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: public class GenericTest { public static void main(String[] a ...

  2. Eclipse项目中引用第三方jar包时将项目打包成jar文件的两种方式

    转载自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFES ...

  3. java中使用js函数

    JDK6已经发布很久了,很早就听过他已经支持脚本语言了,不过一直没有时间尝试,今天偷闲试了一下,感觉不错. javax.script包它是Java新增的操作脚本的工具包, 利用它我们可以对脚本语言进行 ...

  4. c++中的重载、覆盖和隐藏

    1 重载发生在同一个类内部. 同一个类内部,具有相同的函数名,但是参数列表不同,那么就是重载.因为c++编译器编译时,将函数名和函数列表一起对函数进行了重命名. 2 覆盖和隐藏发生在子类和父类之间. ...

  5. 【题解】UVA10140 [Prime Distance]

    [题解]UVA10140 Prime Distance 哈哈哈哈\(miller-rabbin\)水过去了哈哈哈 还能怎么办呢?\(miller-rabbin\)直接搞.枚举即可,还跑得飞快. 当然此 ...

  6. Cocos2d-X开发中国象棋《九》走棋规则

    在上一节中实现了走棋,这篇博客将介绍中国象棋中的走棋规则 在写博客前先可能一下象棋的走棋规则: 1)将 将的坐标关系:横坐标相等,纵坐标相减绝对值等于1,或者纵坐标相等,横坐标相减绝对值等于1 将的特 ...

  7. java读取TXT文件中的数据

    将文件放在一个指定的磁盘目录下: File file = new File("指定的文件路径"); try{ BufferedReader br = new BufferedRea ...

  8. Java for LeetCode 082 Remove Duplicates from Sorted List II

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...

  9. Gemini.Workflow 双子工作流入门教程三:定义流程:流程节点、迁移条件参数配置

    简介: Gemini.Workflow 双子工作流,是一套功能强大,使用简单的工作流,简称双子流,目前配套集成在Aries框架中. 下面介绍本篇教程:定义流程:流程节点.迁移条件参数配置. 一.普通节 ...

  10. ZOJ - 1504 Slots of Fun 【数学】

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1504 题意 给出一串字符串 里面的每个字符的位置 都按照题目的意 ...