File tree Expand file tree Collapse file tree 2 files changed +120
-0
lines changed Expand file tree Collapse file tree 2 files changed +120
-0
lines changed Original file line number Diff line number Diff line change
1
+ package main
2
+
3
+ import (
4
+ "bufio"
5
+ . "fmt"
6
+ "io"
7
+ )
8
+
9
+ // github.com/EndlessCheng/codeforces-go
10
+ func CF1593E (_r io.Reader , _w io.Writer ) {
11
+ in := bufio .NewReader (_r )
12
+ out := bufio .NewWriter (_w )
13
+ defer out .Flush ()
14
+
15
+ var T , n , k , v , w int
16
+ for Fscan (in , & T ); T > 0 ; T -- {
17
+ Fscan (in , & n , & k )
18
+ g := make ([][]int , n )
19
+ d := make ([]int , n )
20
+ for i := 1 ; i < n ; i ++ {
21
+ Fscan (in , & v , & w )
22
+ v --
23
+ w --
24
+ g [v ] = append (g [v ], w )
25
+ g [w ] = append (g [w ], v )
26
+ d [v ]++
27
+ d [w ]++
28
+ }
29
+ if n < 3 {
30
+ Fprintln (out , 0 )
31
+ continue
32
+ }
33
+ q := make ([]int , 0 , n )
34
+ for i , d := range d {
35
+ if d == 1 {
36
+ q = append (q , i )
37
+ }
38
+ }
39
+ for ; k > 0 && len (q ) > 0 ; k -- {
40
+ sz := len (q )
41
+ for _ , v := range q {
42
+ for _ , w := range g [v ] {
43
+ if d [w ]-- ; d [w ] == 1 {
44
+ q = append (q , w )
45
+ }
46
+ }
47
+ }
48
+ q = q [sz :]
49
+ }
50
+ Fprintln (out , cap (q ))
51
+ }
52
+ }
53
+
54
+ //func main() { CF1593E(os.Stdin, os.Stdout) }
Original file line number Diff line number Diff line change
1
+ package main
2
+
3
+ import (
4
+ "github.com/EndlessCheng/codeforces-go/main/testutil"
5
+ "testing"
6
+ )
7
+
8
+ // https://codeforces.com/problemset/problem/1593/E
9
+ // https://codeforces.com/problemset/status/1593/problem/E
10
+ func TestCF1593E (t * testing.T ) {
11
+ // just copy from website
12
+ rawText := `
13
+ inputCopy
14
+ 6
15
+
16
+ 14 1
17
+ 1 2
18
+ 2 3
19
+ 2 4
20
+ 4 5
21
+ 4 6
22
+ 2 7
23
+ 7 8
24
+ 8 9
25
+ 8 10
26
+ 3 11
27
+ 3 12
28
+ 1 13
29
+ 13 14
30
+
31
+ 2 200000
32
+ 1 2
33
+
34
+ 3 2
35
+ 1 2
36
+ 2 3
37
+
38
+ 5 1
39
+ 5 1
40
+ 3 2
41
+ 2 1
42
+ 5 4
43
+
44
+ 6 2
45
+ 5 1
46
+ 2 5
47
+ 5 6
48
+ 4 2
49
+ 3 4
50
+
51
+ 7 1
52
+ 4 3
53
+ 5 1
54
+ 1 3
55
+ 6 1
56
+ 1 7
57
+ 2 1
58
+ outputCopy
59
+ 7
60
+ 0
61
+ 0
62
+ 3
63
+ 1
64
+ 2`
65
+ testutil .AssertEqualCase (t , rawText , 0 , CF1593E )
66
+ }
You can’t perform that action at this time.
0 commit comments