Minimize Malware Spread II LeetCode solution in Python
1from collections import defaultdict2from collections import deque345class Solution:6def minMalwareSpread(self, graph: List[List[int]], initial: List[int]) -> int:7n = len(graph)8G = defaultdict(list)9for v in range(n):10for w in range(n):11if graph[v][w]:12G[v].append(w)1314affect = defaultdict(list)15for s in initial:16visited = set([v for v in initial if v != s])17que = deque([s])18while que:19v = que.popleft()20if v in visited:21continue22visited.add(v)23affect[v].append(s)24for w in G[v]:25que.append(w)26res = [0] * n27for v in affect:28if len(affect[v]) == 1:29res[affect[v].pop()] += 130if not max(res):31return min(initial)32return res.index(max(res))