nyoj 282 You are my brother

You are my brother

时间限制: 1000 ms  |           内存限制: 65535 KB
难度: 3
描述

Little A gets to know a new friend, Little B, recently. One day, they realize that they are family 500 years ago. Now, Little A wants to know whether Little B is his elder, younger or brother.

输入
There are multiple test cases.
For each test case, the first line has a single integer, n (n<=1000). The next n lines have two integers a and b (1<=a,b<=2000) each, indicating b is the father of a. One person has exactly one father, of course. Little A is numbered 1 and Little B is numbered 2.
Proceed to the end of file.
输出
For each test case, if Little B is Little A’s younger, print “You are my younger”. Otherwise, if Little B is Little A’s elder, print “You are my elder”. Otherwise, print “You are my brother”. The output for each test case occupied exactly one line.
样例输入
5
1 3
2 4
3 5
4 6
5 6
6
1 3
2 4
3 5
4 6
5 7
6 7
样例输出
You are my elder
You are my brother
深搜: 查找1,2节点上面分别有多少节点。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<queue>
#include<stack>
#include<algorithm>
#define MAX 2001
using namespace std;
int set[MAX];
int maxnode;
int sum1,sum2;
int max(int x,int y)
{
    return x>y?x:y;
}
void dfs(int p,int pos)
{
    int i;
    if(set[p]==p)//找到根节点 
    return ;
    for(i=1;i<=maxnode;i++)
    {
        if(set[p]==i)//找到父节点 
        {
            if(pos==1)
            sum1++;
            else
            sum2++;
            dfs(i,pos);//继续 
        }
    }
} 
void init()
{
    int i;
    for(i=1;i<MAX;i++)
    set[i]=i;
}
void solve()
{
    if(sum1==sum2)
    printf("You are my brother\n");
    else if(sum1>sum2)
    printf("You are my elder\n");
    else
    printf("You are my younger\n");
}
int main()
{
    int n,i,j,x,y;
    while(scanf("%d",&n)!=EOF)
    {
        init();
        maxnode=0;
        while(n--)
        {
            scanf("%d%d",&x,&y);
            maxnode=max(max(x,y),maxnode);
            set[x]=y;
        }
        sum1=sum2=0;
        dfs(1,1);
        dfs(2,2);
        solve();
    }
    return 0;
}

你可能感兴趣的:(nyoj 282 You are my brother)