class Solution:
    def dfs(self, cur, visit, dp, graph):
        for next in graph[cur]:
            if visit[next] == False:
                visit[next] = True
                dp[cur] += self.dfs(next, visit, dp, graph)
        return dp[cur]

    def minimumFuelCost(self, roads: List[List[int]], seats: int) -> int:
        n = len(roads) + 1
        graph = [[] for _ in range(n)]
        visit = [False for _ in range(n)]
        dp = [1 for _ in range(n)]
        for l, r in roads:
            graph[l].append(r)
            graph[r].append(l)
        visit[0] = True
        self.dfs(0, visit, dp, graph)
        return sum([(x + seats - 1) // seats for x in dp[1:]])


열심히 엄청 길게 풀었는데 알고 보니 내가 문제를 잘못 이해했었음

다시 짜야했다 ㅜㅜ 그냥 평범한 트리 dp였네