Minimum Subtree Cover SUBTRCOV
You are given a tree with n vertices (numbered 1,2,…,n) and an integer k.
A subtree is defined as a connected subgraph of the tree. That is, a subtree is another tree that can be obtained by removing some (possibly none) vertices and all edges incident to those vertices from T.
A subset S of vertices is called good if every subtree containing all the nodes in S has at least k nodes.
Find the size of the smallest good subset.
Input
The first line contains a single integer T, the number of test cases. The descriptions of test cases follow.
The first line of each testcase contains two integers, n and k.
The next n−1 lines each contains two integers u, v, denoting an edge between vertices u and v of the tree.
Output
For each test case print in a single line, the minimum size of a good subset.
Constraints
1≤n≤105
1≤k≤n
1≤u,v≤n
The given edges for each test case form a tree.
The sum of n over all test cases is at most 106.
Subtasks
Subtask #1 (30 points): 1≤n≤103
Subtask #2 (70 points): original constraints
Sample Input
2
7 5
1 2
2 3
3 4
3 5
5 6
3 7
6 4
1 2
1 3
1 4
1 5
1 6
Sample Output
2
3
Explanation
Test Case 1: Consider the set S={1,6}.
The smallest subtree that contains both of the vertices in S is the path between them (1→2→3→5→6) which contains 5 vertices. Hence for k=5, the answer is 2.
Test Case 2: Consider the set S={2,3,4}.
The smallest subtree that contains these three vertices includes 4 nodes {1,2,3,4}.
Program:
import sys
sys.setrecursionlimit(10**9)
def fixHeight(nod, par, gr, H):
isleaf = True
for cnod in gr[nod]:
if cnod == par:
continue
isleaf = False
fixHeight(cnod, nod, gr, H)
H[nod] = max(H[nod], 1 + H[cnod])
if isleaf:
H[nod] = 1
def getFarthest(node, gr, n1):
do = [False]*(n1+1)
fdrr = -1
dur = None
que = [(node, 0)]
do[node] = True
while que:
nod, dis = que.pop(0)
if fdrr < dis:
fdrr = dis
dur = nod
for cnod in gr[nod]:
if do[cnod]:
continue
do[cnod] = True
que.append((cnod, dis+1))
return dur
def breakIntoLinesss(nod, par, gr, li, n1, cur):
H = [0]*(n1+1)
fixHeight(nod, par, gr, H)
dfs(nod, par, gr, H, li, 1)
def dfs(nod, par, gr, H, li, cur):
isleaf = True
mx = 0
for cnod in gr[nod]:
if cnod == par:
continue
isleaf = False
mx = max(mx, H[cnod])
if isleaf:
li.append(cur)
return
c = 0
for cnod in gr[nod]:
if cnod == par:
continue
if H[cnod] == mx and c == 0:
dfs(cnod, nod, gr, H, li, cur+1)
c+=1
else:
dfs(cnod, nod, gr, H, li, 1)
for case in range(int(input())):
n1, k = map(int, input().split())
gr = [[] for i in range(n1+1)]
for i in range(n1-1):
u,v = map(int, input().split())
gr[u].append(v)
gr[v].append(u)
if k==1:
print(1)
u = getFarthest(1, gr, n1)
li = []
breakIntoLinesss(u, 0, gr, li, n1, 1)
li.sort(reverse = True)
size = 1
total = 0
i = 0
while total < k:
size += 1
total += li[i]
i+=1
print(size)
June Long Challenge 2021 Solutions
- Maximum Frequent Subarray Sum solution codechef
- Dual Distance solution codechef
- Optimal Xor Set solution codechef
- Minimum Subtree Cover solution codechef
- Minimum Dual Area solution codechef
- Bitwise Tuples solution codechef
- Shortest Route solution codechef
- Bella ciao solution codechef
- Summer Heat solution codechef
March Long Challenge 2021 Solutions
- An Interesting Sequence ISS SOLUTION
- Tree House THOUSES SOLUTION
- Valid Paths VPATH SOLUTION
- Modular Equation MODEQ SOLUTION
- Tic Tac Toe TCTCTOE SOLUTION
- Xor Equality XOREQUAL SOLUTION
- Golf LKDNGOLF SOLUTION
- Solubility SOLBLTY SOLUTION
April Long Challenge 2021 Solutions
- Chef and Dice SDICE Solution
- Worthy Matrix KAVGMAT Solution
- Binary String MEX MEXSTR Solution
- Boolean Game BOOLGAME Solution
- Tree Permutations TREEPERM Solution
- Destroy the EMP Chip CHAOSEMP Solution
- Chef and Pair Flips PAIRFLIP Solution
- String Power STRPOW Solution
- Brahma and Shiva SHRINES Solution
- Water Sort Puzzle (Challenge) WTRSORT Solution
- World Record BOLT Solution
- Strong Language SSCRIPT Solution
- Valid Pair SOCKS1 Solution
Codechef Long Challenge Solutions
February Long Challenge 2021
- 1. Frog Sort Solution Codechef
- 2. Chef and Meetings Solution Codechef
- 3. Maximise Function Solution Codechef
- 4. Highest Divisor Solution Codechef
- 5. Cut the Cake Challenge Solution Codechef
- 6. Dream and the Multiverse Solution Codechef
- 7. Cell Shell Solution Codechef
- 8. Multiple Games Solution Codechef
- 9. Another Tree with Number Theory Solution Codechef
- 10. XOR Sums Solution Codechef
- 11. Prime Game Solution CodeChef
- 12. Team Name Solution Codechef
January Long Challenge 2021
- Chef and Division 3 DIVTHREE SOLUTION Code Chef
- Encoded String DECODEIT SOLUTION Code Chef
- Point Of Impact BILLRD SOLUTION Code Chef
- Fair Elections FAIRELCT SOLUTION Code Chef
- Watching CPL WIPL SOLUTION Code Chef
- Chef and Ants ANTSCHEF SOLUTION Code Chef
- Blackjack BLKJK SOLUTION Code Chef
- And-Or Game ORAND SOLUTION Code Chef
- Stack-Queue Sort (Challenge) SQSORT SOLUTION Code Chef
- Expected Number of SCCs RCTEXSCC SOLUTION Code Chef
- Curious Matrix CURMAT SOLUTION Code Chef
- Cool Subsets COOLSBST SOLUTION Code Chef
- Sequence Creation ARCRT SOLUTION Code Chef
- Greedy Students GRDSTD SOLUTION Code Chef
November Challenge 2020 SOLUTION CodeChef
- Ada and Dishes SOLUTION ADADISH
- Iron Magnet and Wall SOLUTION FEMA2
- Magical Candy Store SOLUTION CNDYGAME
- Unusual Queries SOLUTION UNSQUERS
- Red-Black Boolean Expression SOLUTION RB2CNF
- Chef and the Combination Lock SOLUTION CHEFSSM
- Scalar Product Tree SOLUTION SCALSUM
- Connect on a Grid (Challenge) SOLUTION CONGRID
October Lunchtime 2020 CodeChef SOLUTIONS
- AND Plus OR SOLUTION ANDOR
- Chef and Subtree MEXs SOLUTION SUBMEXS
- Chef Likes Good Sequences SOLUTION GSUB
- Cute Chef Gift SOLUTION COPAR
- Chef Is Just Throwing Random Words SOLUTION SSO
- Counting Spaghetti SOLUTION CDSUMS
- Chef and Edge Flipping SOLUTION EFLIP
RELATED :
- Top Best Keylogger in Python 3 Make One
- What is Hacking?
- Secrets of the Deep Dark Web
- CODECHEF September Lunchtime 2020 SOLUTIONS
- August Lunchtime 2020 SOLUTIONS
Related :
- A. Shandom Ruffle SOLUTION
- B. Pear TreaP SOLUTION
- C. Sneetches and Speeches 3 SOLUTION
- D. The Grim Treaper SOLUTION
- Y. Sneetches and Speeches 1 SOLUTION
- Z. Trick or Treap SOLUTION
- A. Floor Number SOLUTION CODE FORCES
- B. Symmetric Matrix SOLUTION CODE FORCES
- C. Increase and Copy SOLUTION CODE FORCES
- D. Non-zero Segments SOLUTION CODE FORCES
- E. Rock, Paper, Scissors SOLUTION CODE FORCES
- F. Number of Subsequences SOLUTION CODE FORCES
Related :
- Chef and Easy Queries SOLUTIONS CHEFEZQ
- Covid Run SOLUTIONS CVDRUN OCTOBER CHALLENGE
- Positive AND SOLUTIONS POSAND
- Replace for X SOLUTIONS REPLESX
- Village Road Network SOLUTIONS VILLNET
- Random Knapsack SOLUTIONS RANDKNAP
- D-Dimensional MST SOLUTIONS DDIMMST
- Compress all Subsegments SOLUTIONS SEGCOMPR
- Adding Squares SOLUTIONS ADDSQURE
- Inversions SOLUTIONS INVSMOD2 OCOTBER CHALLENGE
- Rooted Minimum Spanning Tree SOLUTIONS ROOTMST