当前位置: 代码迷 >> 综合 >> LeetCode 1443 - 收集树上所有苹果的最少时间(周赛)
  详细解决方案

LeetCode 1443 - 收集树上所有苹果的最少时间(周赛)

热度:49   发布时间:2023-12-13 03:54:19.0

题目描述

1443. 收集树上所有苹果的最少时间

解法:(C++)

这道题有些机贼,如果你看到树,想到了递归、遍历之类的,那就拜拜了 (# ̄~ ̄#)

对于有苹果的节点,我们一定会走过它的父节点,而且每访问一个带苹果的节点就要+2+2+2s,一来一回

那这样子的话,其实不用递归、遍历什么的了,直接找到带苹果的节点标记其所有父节点为带苹果节点,最后有几个带苹果节点就加几个两秒

class Solution {
    
public:int minTime(int n, vector<vector<int>>& edges, vector<bool>& hasApple) {
    int res = 0;for(int i=edges.size()-1;i;i--)if(hasApple[edges[i][1]]) hasApple[edges[i][0]] = true;for(int i=0;i<edges.size();i++)if(hasApple[edges[i][1]]) res += 2;return res;}
};