690. Employee Importance (Easy) - TengnanYao/daily_leetcode GitHub Wiki

"""
# Definition for Employee.
class Employee:
    def __init__(self, id: int, importance: int, subordinates: List[int]):
        self.id = id
        self.importance = importance
        self.subordinates = subordinates
"""

class Solution:
    def getImportance(self, employees: List['Employee'], id: int) -> int:
        # bfs
        h = {e.id : e for e in employees}
        result = 0
        q = [h[id]]
        while q:
            temp = []
            for e in q:
                result += e.importance
                for s in e.subordinates:
                    temp.append(h[s])
            q = temp
        return result
    
        # dfs
        h = {e.id : e for e in employees}
        def dfs(id):
            return h[id].importance + sum(dfs(x) for x in h[id].subordinates)
        return dfs(id)