class Solution {
public:
int numTimesAllBlue(vector<int>& light) {
int result = 0;
int sum = 0;
int count = 0;
for(int i = 0; i < light.size();i++)
{
count += (i+1);
sum += light[i];
if(count == sum)
result++;
}
return result;
}
};
class Solution {
public:
int numOfMinutes(int n, int headID, vector<int>& manager, vector<int>& informTime) {
int result = 0;
for(int i = 0; i < n;i++)
{
int sum = 0;
if(informTime[i] == 0)
{
int parent = manager[i];
while(parent != -1)
{
sum += informTime[parent];
parent = manager[parent];
}
}
result = max(result, sum);
}
return result;
}
};
class Solution {
public:
double frogPosition(int n, vector<vector<int>>& edges, int t, int target) {
vector<vector<int>> v(n+1);
for (auto e : edges)
{
int x = e[0], y = e[1];
v[x].push_back(y);
v[y].push_back(x);
}
vector<vector<double>> f(111, vector<double>(n+1));
function<void(int, int, int)> dfs = [&](int x, int d, int p)
{
int sons = 0;
for (auto y : v[x])
{
if (y == p) continue;
sons ++;
}
for (auto y : v[x])
{
if (y == p) continue;
f[d+1][y] = f[d][x]/sons;
dfs(y, d+1, x);
}
if (sons == 0)
{
for (int i = d+1; i <= t; ++ i)
f[i][x] = f[d][x];
}
};
f[0][1] = 1;
dfs(1, 0, 0);
return f[t][target];
}
};