@@ -42,7 +42,7 @@ public A(boolean stdIO)throws FileNotFoundException{
4242 }
4343
4444
45- int n = 0 , m = 0 ;
45+ int n , m ;
4646
4747 void run ()throws Exception {
4848 clear ();
@@ -52,8 +52,8 @@ void run()throws Exception{
5252 adj [u ].add (v );
5353 adj [v ].add (u );
5454 }
55- LinkedList <Integer > adj1 [] = getCopy (adj , n ); // wow
56- bfs (adj1 , 1 , n ); //Assuming that node 1 is the root node
55+ LinkedList <Integer > adj0 [] = getCopy (adj , n ); // wow
56+ bfs (adj0 , 1 , n ); //Assuming that node 1 is the root node
5757 long ans = 0 ;
5858 out .write ("" +ans +"\n " );
5959
@@ -63,51 +63,46 @@ void once(){
6363
6464 }
6565
66- int MAX_N = 200005 ;
67- int level [] = new int [MAX_N + 1 ];
68- int f [] = new int [MAX_N + 1 ]; // f[i] = father of i
69- LinkedList <Integer > adj [] = new LinkedList [MAX_N + 1 ];
66+ int MAXN = 200005 ;
67+ int depth [] = new int [MAXN + 1 ];
68+ int f [] = new int [MAXN + 1 ]; // f[i] = father of i
69+ LinkedList <Integer > adj [] = new LinkedList [MAXN + 1 ];
70+ boolean vis [] = new boolean [MAXN + 1 ];
7071
7172 void clear (){
72- for (int i = 1 ; i <= MAX_N ; i ++){
73+ for (int i = 1 ; i <= MAXN ; i ++){
7374 adj [i ] = new LinkedList <Integer >();
7475 }
7576 }
7677
77- // Maintain mutability
78- LinkedList <Integer >[] getCopy (LinkedList <Integer > adj [] , int n ){
79- LinkedList <Integer > adj_copy [] = new LinkedList [n + 1 ];
78+ // Maintain immutability
79+ LinkedList <Integer >[] getCopy (LinkedList <Integer >[] adj , int n ){
80+ LinkedList <Integer > adjCopy [] = new LinkedList [n + 1 ];
8081 for (int i = 1 ; i <= n ; i ++){
81- adj_copy [i ] = new LinkedList <Integer >();
82+ adjCopy [i ] = new LinkedList <Integer >();
8283 for (int x : adj [i ]){
83- adj_copy [i ].add (x );
84+ adjCopy [i ].add (x );
8485 }
8586 }
86- return adj_copy ;
87+ return adjCopy ;
8788 }
8889
8990 void bfs (LinkedList <Integer > adj [], int root , int n ){
9091
91- boolean vis [] = new boolean [n +1 ];
92- LinkedList <Integer > q = new LinkedList <Integer >();
93- int index = 1 ;
94- int l = 0 ; //level
95-
96- q .add (root );
92+ LinkedList <Integer > queue = new LinkedList <Integer >();
93+ depth [root ] = 0 ;
94+ queue .add (root );
9795 vis [root ] = true ;
9896
99- while (!q .isEmpty ()){
100-
101- int u = q .removeFirst (); // The Stack
102- level [u ] = l ;
97+ while (!queue .isEmpty ()){
10398
104- if (adj [u ].size ()>0 ){
99+ int u = queue .removeFirst (); // The Stack
100+ if (adj [u ].size () > 0 ){
105101 int v = adj [u ].removeFirst ();
106102 if (!vis [v ]){
107- q .add (v );
108- l ++;
103+ queue .add (v );
109104 vis [v ] = true ;
110- level [v ] = l ;
105+ depth [v ] = 1 + depth [ u ] ;
111106 f [v ] = u ;
112107 }
113108 }
@@ -116,9 +111,9 @@ void bfs(LinkedList<Integer> adj[], int root, int n){
116111
117112 int lca (int u , int v ){
118113 while (u != v ){
119- if (level [u ] < level [v ]){
114+ if (depth [u ] < depth [v ]){
120115 v = f [v ];
121- }else if (level [u ] > level [v ]){
116+ }else if (depth [u ] > depth [v ]){
122117 u = f [u ];
123118 }else {
124119 u = f [u ];
0 commit comments