FZU 2057 家谱(DFS)

 Problem 2057 家谱

Accept: 135    Submit: 364
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

 Source

FOJ有奖月赛-2011年11月

DFS加路径打印

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
#include<stdlib.h>
#include<algorithm>
using namespace std;
const int MAXN=10000+5;//1父亲    2母亲
struct node
{
    int l,r;
}a[MAXN];
int str[MAXN],lenth;

void print(int str[])
{
    for(int i=0;i<lenth;i++)
    {
        if(str[i]==1) printf("F");
        if(str[i]==2) printf("M");
    }
}

bool DFS(int cur,int e,int cnt)
{
    if(cur==e) {lenth=cnt;return true;}
    else if(a[cur].l==0 && a[cur].r==0) return false;
    else
    {
        str[cnt]=1;
        if(DFS(a[cur].l,e,cnt+1)) return true;
        str[cnt]=2;
        if(DFS(a[cur].r,e,cnt+1)) return true;
        return false;
    }
}

int main()
{
    int kase,n,num,m,x,y,sx;
    bool flag;
    cin>>kase;
    while(kase--)
    {
        memset(a,0,sizeof(a));
        memset(str,0,sizeof(str));
        scanf("%d",&n);
        for(int i=1;i<=n/2;i++)
        {
            scanf("%d",&num);
            scanf("%d %d",&a[num].l,&a[num].r);
        }
        scanf("%d",&m);
        for(int i=1;i<=m;i++)
        {
            scanf("%d %d",&x,&y);
            if(DFS(y,x,0))
            {
                printf("0 ");
                print(str);
            }
            else if(DFS(x,y,0))
            {
                printf("1 ");
                print(str);
            }
            else
                printf("Relative");
            printf("\n");
            memset(str,0,sizeof(str));
        }
    }
    return 0;
}

时间: 2024-10-22 03:36:55

FZU 2057 家谱(DFS)的相关文章

FZU 2057 家谱(dfs)

Problem 2057 家谱 Accept: 129    Submit: 356Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description 由于计划生育的实行,我们以及将来几代人都会是独生子女,即每对夫妇只会有一个孩子.那么给你XXXX年某人的一张树形族谱,你能指出其中任意两人的关系吗?  Input 输入数据第一行一个整数T表示有T组数据. 每组数据第一行一个正整数N (2 < N < 10000 ,且N为奇

FZU 2150(DFS+BFS)

Problem 2150 Fire Game Accept: 1357    Submit: 4807 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns). At the beginning, each gri

2014 8.7 第8场个人 排位

FZU 2079  最大获利(dp) 自己很难想到,囧 dp[i]表示处理完前i 个点的最大收益.有两种情况:(1)第i 个点不投资,那么dp[i] = dp[i - 1](2)第i 个点投资,那么dp[i] = max(dp[k] + get(k + 1,i) - sigma(c[j]) (k + 1 <= j <= i))(0 < k <i)这个的意思是,[k + 1,i]点选择全部投资,所以sigma(c[j])表示每个点都投资了,get(k +1,i)的意思是,[k + 1

hdu3974----Assign the task

Assign the task Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 780    Accepted Submission(s): 392 Problem Description There is a company that has N employees(numbered from 1 to N),every emplo

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

FZU 2150 Fire Game Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns). At the beginning, each grid of this boar

FZU Problem 2112 Tickets (dfs 欧拉图啊)

题目链接:http://acm.fzu.edu.cn/problem.php?pid=2112 Problem Description You have won a collection of tickets on luxury cruisers. Each ticket can be used only once, but can be used in either direction between the 2 different cities printed on the ticket.

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

FZU 2107 Hua Rong Dao Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Practice Description Cao Cao was hunted down by thousands of enemy soldiers when he escaped from Hua Rong Dao. Assuming Hua Rong Dao is a narrow aisle

FZU 2107 Hua Rong Dao DFS

Hua Rong Dao Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u FZU 2107 Description Cao Cao was hunted down by thousands of enemy soldiers when he escaped from Hua Rong Dao. Assuming Hua Rong Dao is a narrow aisle (one N*4

FZU Problem 2107 Hua Rong Dao (打表 dfs啊)

题目链接:http://acm.fzu.edu.cn/problem.php?pid=2107 Problem Description Cao Cao was hunted down by thousands of enemy soldiers when he escaped from Hua Rong Dao. Assuming Hua Rong Dao is a narrow aisle (one N*4 rectangle), while Cao Cao can be regarded a