TomoLink
CompaniesAppleData Structures & AlgorithmsCount Number of Possible Root Nodes
DSA
HardArray

Count Number of Possible Root Nodes

arrayhash tabledynamic programming

Problem Statement

Alice has an undirected tree with n nodes labeled from 0 to n - 1 . The tree is represented as a 2D integer array edges of length n - 1 where edges[i] = [a _i , b _i ] indicates that there is an edge between nodes a _i and b _i in the tree.

Alice wants Bob to find the root of the tree. She allows Bob to make several guesses about her tree. In one guess, he does the following:

Chooses two distinct integers u and v such that there exists an edge [u, v] in the tree.

He tells Alice that u is the parent of v in the tree.

Bob's guesses are represented by a 2D integer array guesses where guesses[j] = [u _j , v _j ] indicates Bob guessed u _j to be the parent of v _j .

Alice being lazy, does not reply to each of Bob's guesses, but just says that at least k of his guesses are true .

Given the 2D integer arrays edges , guesses and the integer k , return the number of possible nodes that can be the root of Alice's tree . If there is no such tree, return 0 .

Examples

Example 1
Input: edges = [[0,1],[1,2],[1,3],[4,2]], guesses = [[1,3],[0,1],[1,0],[2,4]], k = 3
Output: 3
Root = 0, correct guesses = [1,3], [0,1], [2,4] Root = 1, correct guesses = [1,3], [1,0], [2,4] Root = 2, correct guesses = [1,3], [1,0], [2,4] Root = 3, correct guesses = [1,0], [2,4] Root = 4, correct guesses = [1,3], [1,0] Considering 0, 1, or 2 as root node leads to 3 correct guesses.
Example 2
Input: edges = [[0,1],[1,2],[2,3],[3,4]], guesses = [[1,0],[3,4],[2,1],[3,2]], k = 1
Output: 5
Root = 0, correct guesses = [3,4] Root = 1, correct guesses = [1,0], [3,4] Root = 2, correct guesses = [1,0], [2,1], [3,4] Root = 3, correct guesses = [1,0], [2,1], [3,2], [3,4] Root = 4, correct guesses = [1,0], [2,1], [3,2] Considering any node as root will give at least 1 correct guess.

Constraints

edges.length == n - 1
2 <= n <= 10 ^5
1 <= guesses.length <= 10 ^5
0 <= a _i , b _i , u _j , v _j <= n - 1
a _i != b _i
u _j != v _j
edges represents a valid tree.
guesses[j] is an edge of the tree.
guesses is unique.
0 <= k <= guesses.length
😤
Hard
Difficulty
Topic Info
ModuleDSA
CategoryArray
Sub-topicHash Table
Tags
arrayhash tabledynamic programmingtreedepth-first search
Navigation
Count Number of Possible Root Nodes [Hard] | Apple Dsa | TomoLink