zoukankan      html  css  js  c++  java
  • 寻找宝藏

    题目描述 
    有一棵多叉树T,你在树根处,宝藏在某一叶子节点L。现在你沿着树枝向叶子方向走去,从不回头,如果遇到树叉节点,你等概率地挑选一个分支继续走。请问,在给定T,L的情况下,你有多大概率拿到宝藏?

    输入格式 
    第一行,整数N,M,L(1< N< 1000,0< M< 1000,0< L< N),分别代表树T上的节点数、树枝的个数,宝藏所在节点。树根为0号结点。 
    然后有M行,每行两个整数A,B(0≤ A,B< N)代表从节点A到节点B有一条树枝。可以假设节点A总是更靠近树根。

    输出格式 
    所求的概率,输出四舍五入到6位小数,然后换行。

    输入样例 
    6 5 5 
    0 1 
    1 3 
    0 2 
    2 4 
    2 5 
    输出样例 
    0.250000

    #include <stdio.h>  
    #define MAXN 1005  
    
    int father[MAXN] = { -1 }, son[MAXN] = { 0 };
    
    main()
    {
        int l, b, tar, x, y;
        double revp = 1;
        scanf("%d%d%d", &l, &b, &tar);
        while (b--) {
            scanf("%d%d", &x, &y);
            son[x]++; 
            father[y] = x;
        }
        while (father[tar] != -1) {
            tar = father[tar];
            revp *= son[tar];
        }
        printf("%lf
    ", 1 / revp);
        return 0;
    }
  • 相关阅读:
    2.Redis常用命令
    1.CentOS安装Redis
    PAT 1127 ZigZagging on a Tree(30分)
    单链表上的基本操作
    求一个序列中的主元素
    PAT 1018 Public Bike Management(30分)
    PAT 1013 Battle Over Cities
    《算法笔记》题目分类
    PAT 1030 Travel Plan(30分)
    CentOS 安装 NET Core SDK 
  • 原文地址:https://www.cnblogs.com/xym4869/p/8657734.html
Copyright © 2011-2022 走看看