1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| // @Title: 网络空闲的时刻 (The Time When the Network Becomes Idle)
// @Author: 15816537946@163.com
// @Date: 2022-03-20 10:19:45
// @Runtime: 292 ms
// @Memory: 25.4 MB
func networkBecomesIdle(edges [][]int, patience []int) (ans int) {
n := len(patience)
g := make([][]int, n)
for _, e := range edges {
x, y := e[0], e[1]
g[x] = append(g[x], y)
g[y] = append(g[y], x)
}
vis := make([]bool, n)
vis[0] = true
q := []int{0}
for dist := 1; q != nil; dist++ {
tmp := q
q = nil
for _, x := range tmp {
for _, v := range g[x] {
if vis[v] {
continue
}
vis[v] = true
q = append(q, v)
ans = max(ans, (dist*2-1)/patience[v]*patience[v]+dist*2+1)
}
}
}
return
}
func max(a, b int) int {
if b > a {
return b
}
return a
}
|