Skip to content

Commit d098465

Browse files
authored
Update 2603-collect-coins-in-a-tree.js
1 parent 4687b6c commit d098465

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

2603-collect-coins-in-a-tree.js

+66
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,69 @@
1+
/**
2+
* @param {number[]} coins
3+
* @param {number[][]} edges
4+
* @return {number}
5+
*/
6+
var collectTheCoins = function(coins, edges) {
7+
let n = coins.length;
8+
let next = Array.from({ length: n }, () => new Set());
9+
10+
let degree = new Array(n).fill(0);
11+
for (let edge of edges) {
12+
let a = edge[0],
13+
b = edge[1];
14+
next[a].add(b);
15+
next[b].add(a);
16+
degree[a]++;
17+
degree[b]++;
18+
}
19+
20+
let deleted = new Array(n).fill(0);
21+
let q = [];
22+
for (let i = 0; i < n; i++) {
23+
if (degree[i] === 1 && coins[i] === 0) q.push(i);
24+
}
25+
while (q.length > 0) {
26+
let len = q.length;
27+
while (len--) {
28+
let cur = q.shift();
29+
deleted[cur] = 1;
30+
for (let nxt of next[cur]) {
31+
degree[nxt]--;
32+
next[nxt].delete(cur);
33+
if (degree[nxt] === 1 && coins[nxt] === 0) q.push(nxt);
34+
}
35+
}
36+
}
37+
38+
let depth = new Array(n).fill(-1);
39+
for (let i = 0; i < n; i++) {
40+
if (degree[i] === 1 && deleted[i] === 0) {
41+
q.push(i);
42+
depth[i] = 1;
43+
}
44+
}
45+
while (q.length > 0) {
46+
let len = q.length;
47+
while (len--) {
48+
let cur = q.shift();
49+
for (let nxt of next[cur]) {
50+
degree[nxt]--;
51+
next[nxt].delete(cur);
52+
depth[nxt] = Math.max(depth[nxt], depth[cur] + 1);
53+
if (degree[nxt] === 1) q.push(nxt);
54+
}
55+
}
56+
}
57+
58+
let ret = 0;
59+
for (let i = 0; i < n; i++) ret += depth[i] >= 3;
60+
61+
if (ret >= 1) return (ret - 1) * 2;
62+
else return 0;
63+
};
64+
65+
// another
66+
167
let a, cum, res, v, sum, g;
268
const initializeGraph = (n) => { let g = []; for (let i = 0; i < n; i++) { g.push([]); } return g; };
369
const packUG = (g, edges) => { for (const [u, v] of edges) { g[u].push(v); g[v].push(u); } };

0 commit comments

Comments
 (0)