题目要求
给定节点,要求找到从根节点往该节点寻找的概率。
AC代码
#include <bits/stdc++.h>
#include <vector>
using namespace std;
struct TreeNode { //每个节点保存一个儿子数组和父亲
int father;
vector<int> son;
TreeNode(): father(-1), son() {
son.clear();
}
};
int main() {
int N, M, L;
TreeNode T[1001];
scanf("%d%d%d", &N, &M, &L);
int a, b;
while (M--) {
scanf("%d%d", &a, &b);
T[a].son.push_back(b);
T[b].father = a;
}
L = T[L].father;
int sum = 1;
do { //从给定节点出发,找到根节点结束
sum *= T[L].son.size();
L = T[L].father;
} while (L != -1);
double output = (double)1.0 / sum;
printf("%.6lf\n", output);
return 0;
}