Skip to content

Commit a9fc36b

Browse files
authored
Update 928-minimize-malware-spread-ii.js
1 parent 742d3b1 commit a9fc36b

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

928-minimize-malware-spread-ii.js

+51
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,54 @@ var minMalwareSpread = function (graph, initial) {
4343
initial.sort((a, b) => a - b)
4444
return removed == -1 ? initial[0] : removed
4545
}
46+
47+
// another
48+
49+
/**
50+
* @param {number[][]} graph
51+
* @param {number[]} initial
52+
* @return {number}
53+
*/
54+
const minMalwareSpread = function (graph, initial) {
55+
const map = new Map(), n = graph.length
56+
for(let init of initial) {
57+
const visited = new Set(initial)
58+
const q = [init]
59+
while(q.length) {
60+
const cur = q.pop()
61+
for(let i = 0; i < n; i++) {
62+
if(graph[cur][i] === 1 && !visited.has(i)) {
63+
visited.add(i)
64+
q.push(i)
65+
if(map.get(i) == null) map.set(i, [])
66+
map.get(i).push(init)
67+
}
68+
}
69+
}
70+
}
71+
72+
let res = 0, max = -1
73+
const arr = Array(n)
74+
for(let [k,v] of map) {
75+
if(v.length === 1) {
76+
if(arr[v[0]] == null) arr[v[0]] = 0
77+
arr[v[0]]++
78+
}
79+
}
80+
81+
for(let k = 0; k < n; k++) {
82+
const v = arr[k]
83+
if(v > max) {
84+
max = v
85+
res = +k
86+
}
87+
}
88+
89+
let min = Infinity
90+
for(let e of initial) {
91+
if(e < min) min = e
92+
}
93+
return max === -1 ? min: res
94+
95+
}
96+

0 commit comments

Comments
 (0)