Class Solution
- java.lang.Object
-
- g2601_2700.s2603_collect_coins_in_a_tree.Solution
-
public class Solution extends Object
2603 - Collect Coins in a Tree.Hard
There exists an undirected and unrooted tree with
n
nodes indexed from0
ton - 1
. You are given an integern
and a 2D integer array edges of lengthn - 1
, whereedges[i] = [ai, bi]
indicates that there is an edge between nodesai
andbi
in the tree. You are also given an arraycoins
of sizen
wherecoins[i]
can be either0
or1
, where1
indicates the presence of a coin in the vertexi
.Initially, you choose to start at any vertex in the tree. Then, you can perform the following operations any number of times:
- Collect all the coins that are at a distance of at most
2
from the current vertex, or - Move to any adjacent vertex in the tree.
Find the minimum number of edges you need to go through to collect all the coins and go back to the initial vertex.
Note that if you pass an edge several times, you need to count it into the answer several times.
Example 1:
Input: coins = [1,0,0,0,0,1], edges = [[0,1],[1,2],[2,3],[3,4],[4,5]]
Output: 2
Explanation: Start at vertex 2, collect the coin at vertex 0, move to vertex 3, collect the coin at vertex 5 then move back to vertex 2.
Example 2:
Input: coins = [0,0,0,1,1,0,0,1], edges = [[0,1],[0,2],[1,3],[1,4],[2,5],[5,6],[5,7]]
Output: 2
Explanation: Start at vertex 0, collect the coins at vertices 4 and 3, move to vertex 2, collect the coin at vertex 7, then move back to vertex 0.
Constraints:
n == coins.length
1 <= n <= 3 * 104
0 <= coins[i] <= 1
edges.length == n - 1
edges[i].length == 2
0 <= ai, bi < n
ai != bi
edges
represents a valid tree.
- Collect all the coins that are at a distance of at most
-
-
Constructor Summary
Constructors Constructor Description Solution()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
collectTheCoins(int[] coins, int[][] edges)
-