![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLzkFVNNTW65UeNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2kDOxQTN1MTMxAzMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
題目要求
給定節點,要求找到從根節點往該節點尋找的機率。
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;
}