File tree 1 file changed +42
-0
lines changed
1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ const local_input = `
2
+ 7
3
+ 1 6
4
+ 6 3
5
+ 3 5
6
+ 4 1
7
+ 2 4
8
+ 4 7
9
+ ` ;
10
+
11
+ const input = process . execArgv . includes ( "--stack-size=65536" )
12
+ ? require ( "fs" ) . readFileSync ( "dev/stdin" ) . toString ( )
13
+ : local_input ;
14
+
15
+ const inputs = input . trim ( ) . split ( "\n" ) ;
16
+ let cnt = 0 ;
17
+ const n = Number ( inputs [ 0 ] ) ;
18
+ const arr = inputs . slice ( 1 ) . map ( ( v ) => v . split ( " " ) . map ( ( v2 ) => Number ( v2 ) ) ) ;
19
+ const map = { } ;
20
+ arr . forEach ( ( v ) => {
21
+ if ( map [ v [ 0 ] ] ) map [ v [ 0 ] ] . push ( v [ 1 ] ) ;
22
+ else map [ v [ 0 ] ] = [ v [ 1 ] ] ;
23
+ if ( map [ v [ 1 ] ] ) map [ v [ 1 ] ] . push ( v [ 0 ] ) ;
24
+ else map [ v [ 1 ] ] = [ v [ 0 ] ] ;
25
+ } ) ;
26
+ const parents = Array . from ( { length : n + 1 } , ( ) => 0 ) ;
27
+ const visited = Array . from ( { length : n + 1 } , ( ) => false ) ;
28
+
29
+ const que = [ [ 1 , map [ 1 ] ] ] ;
30
+
31
+ while ( que . length > 0 ) {
32
+ const [ cur , nodeArr ] = que . shift ( ) ;
33
+
34
+ visited [ cur ] = true ;
35
+
36
+ for ( const node of nodeArr ) {
37
+ if ( visited [ node ] ) continue ;
38
+ parents [ node ] = cur ;
39
+ que . push ( [ node , map [ node ] ] ) ;
40
+ }
41
+ }
42
+ console . log ( parents . slice ( 2 ) . reduce ( ( a , v ) => a + v + "\n" , "" ) ) ;
You can’t perform that action at this time.
0 commit comments