1. 程式人生 > 其它 >5908. 統計最高分的節點數目

5908. 統計最高分的節點數目

統計每個子樹的個數就行

當前節點的value = 它的所有子樹的節點個數 + 根節點樹節點的個數 - 當前節點子樹節點的個數

class Solution {
public:
    vector<int> v[100010];
    int num[100010];
    long long ret[100010];
    int cnt;

    int dfs(int u)
    {
        int len = v[u].size();
        int cnt1 = 0, cnt2 = 0;
        for(int i = 0; i < len; i++)
        {
            
if(i == 0) cnt1 = dfs(v[u][i]); else cnt2 = dfs(v[u][i]); } num[u] = cnt1 + cnt2 + 1; return num[u]; } int countHighestScoreNodes(vector<int>& parents) { int n = parents.size();
for(int i = 0; i < n; i++) if(i != 0) v[parents[i]].push_back(i); int k = dfs(0); long long max_v = -1, sum; for(int i = 0; i < n; i++) { sum = 1; if(i == 0) { int len2 = v[i].size();
for(int j = 0; j < len2; j++) sum *= (long long)num[v[i][j]]; } else { int len2 = v[i].size(); sum *= (long long)(num[0] - num[i]); for(int j = 0; j < len2; j++) sum *= (long long)num[v[i][j]]; } ret[i] = sum; max_v = max(max_v, sum); } int ans = 0; for(int i = 0; i < n; i++) if(ret[i] == max_v) ans++; return ans; } };
自己選擇的路,跪著也要走完。朋友們,雖然這個世界日益浮躁起來,只要能夠為了當時純粹的夢想和感動堅持努力下去,不管其它人怎麼樣,我們也能夠保持自己的本色走下去。