zoukankan      html  css  js  c++  java
  • 2545 ACM 博客 比较树的路径长短

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2545
    题意:比较树的路径长短
    思路:利用数组存入父节点的值,
    例如:
    5 2
    1 2
    1 3
    3 4
    3 5
    4 2
    查找 4 进行了 3 4和1 3 两步,如何判断到达了根节点根节点必然没有1 1类似相同的两项,于是初始化数组parent[i]=i;当x=parent[x]时到达根节点.。

    基础知识扩展
    puts()函数只用来输出字符串,没有格式控制,里面的参数可以直接是字符串或者是存放字符串的字符数组名。
    printf()函数的输出格式很多,可以根据不同格式加转义字符,达到格式化输出。

    puts()函数的作用与语句printf(“%s ”,s);的作用形同。
    例子:

    ①:

    int main( void )
    {
    puts( “Hello world from puts!” ); //字符串,最后隐含带有’’字符
    }
    Output
    Hello world from puts!

    ②:

    int main()
    {
    static char a[] = {‘H’,’I’,’!’,’!’};
    puts(a);
    }
    则输出 Hi!!烫烫烫烫烫烫烫烫烫烫烫烫dhaklhdwuhdaghdagdak… (后面都是乱码)

    原因: a在结尾处缺少一个空字符(’’), 所以它不是一个串,这样, puts() 就不知道什么时候停止输出, 它将会把 a 后面内存单元中的内容都打印出, 直到它在什么地方碰到了一个空字符为止。

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    
    int parent[100010];
    
    int get(int t)
    {
          int num=0;
          while(t!=parent[t])
          {
             t=parent[t];
             num++;     }
         return num;
    }
    int main()
     {
         int n,m;
         while(~scanf("%d%d",&n,&m)&&n||m)
         {
             int a,b,i,x,y;
             for(i=1;i<=n;i++)
                 parent[i]=i;
             for(i=1;i<n;i++)
             {
                 scanf("%d%d",&a,&b);
                 parent[b]=a;
             }
             while(m--)
             {
                 scanf("%d%d",&x,&y);
                 int px=get(x);
                 int py=get(y);
                 if(px<=py)
                    puts("lxh");
                else
                     puts("pfz");
             }
         }
     }  
  • 相关阅读:
    乱···
    分析不足,明确目标
    与寂寞有染,与爱情无关
    桃花运?桃花劫?
    诺基亚N91——4G硬盘+200万像素!!!
    【转载】我们什么时候结婚
    纪念新生命诞生
    【转载】为一套房子你要奋斗多少年
    【转载】一定要讲给你爱的人听的20个小故事
    快乐不快乐
  • 原文地址:https://www.cnblogs.com/CheeseIce/p/9588678.html
Copyright © 2011-2022 走看看