dfs,分类讨论
class Solution {
public:
double frogPosition(int n, vector<vector<int>>& edges, int t, int target) {
vector<int>g[n+2];
double dp[105];
dp[1]=1.0;
for(auto v:edges){
g[v[0]].push_back(v[1]);
g[v[1]].push_back(v[0]);
}
function<void(int u,int fa,int dep)>dfs=[&](int u,int fa,int dep){
int sz=0;
for(int v:g[u])if(v!=fa)sz++;
if(u==target){
if(sz>0){
if(dep-1==t)return;
else dp[u]=0;
}
if(dep-1>t)dp[u]=0;
return;
}
for(int v:g[u]){
if(v!=fa){
dp[v]=dp[u]*1.0/sz;
dfs(v,u,dep+1);
}
}
};
dfs(1,0,1);
return dp[target];
}
};
京公网安备 11010502036488号