55
66public class _14496 {
77
8- static int a , b , n , m ;
9- static List < Integer >[] graph ;
10- static boolean [] visited ;
8+ private static int n ;
9+ private static int m ;
10+ private static int result = - 1 ;
1111
12- /** 가중치가 없는 최단경로 구하는 문제 : BFS */
13- private static String bfs () {
14-
15- Queue <int []> queue = new LinkedList <>();
16- queue .offer (new int []{a , 0 });
17- visited [a ] = true ;
18-
19- while (!queue .isEmpty ()) {
20- int [] now = queue .poll ();
21-
22- if (now [0 ] == b ) {
23- return String .valueOf (now [1 ]);
24- }
25-
26- for (Integer i : graph [now [0 ]]) {
27- if (!visited [i ]) {
28- visited [i ] = true ;
29- queue .offer (new int []{i , now [1 ] + 1 });
30- }
31- }
32- }
33-
34- return "-1" ;
35- }
12+ private static List <Integer >[] graph ;
13+ private static boolean [] visited ;
3614
3715 public static void main (String [] args ) throws IOException {
3816 BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
3917 BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (System .out ));
4018 StringTokenizer st = new StringTokenizer (br .readLine ());
4119
42- a = Integer .parseInt (st .nextToken ());
43- b = Integer .parseInt (st .nextToken ());
20+ int a = Integer .parseInt (st .nextToken ());
21+ int b = Integer .parseInt (st .nextToken ());
4422
4523 st = new StringTokenizer (br .readLine ());
4624 n = Integer .parseInt (st .nextToken ());
4725 m = Integer .parseInt (st .nextToken ());
4826
4927 graph = new List [n + 1 ];
50- for (int i = 0 ; i <= n ; i ++) {
51- graph [i ] = new ArrayList <>();
52- }
5328 visited = new boolean [n + 1 ];
5429
30+ for (int i = 1 ; i <= n ; i ++) {
31+ graph [i ] = new LinkedList <>();
32+ }
33+
5534 for (int i = 0 ; i < m ; i ++) {
5635 st = new StringTokenizer (br .readLine ());
5736
58- int u = Integer .parseInt (st .nextToken ());
59- int v = Integer .parseInt (st .nextToken ());
37+ int x = Integer .parseInt (st .nextToken ());
38+ int y = Integer .parseInt (st .nextToken ());
6039
61- // 양방향 연결
62- graph [u ].add (v );
63- graph [v ].add (u );
40+ graph [x ].add (y );
41+ graph [y ].add (x );
6442 }
6543
66- bw .write (bfs ());
44+ bfs (a , b );
45+
46+ bw .write (String .valueOf (result ));
6747 bw .flush ();
6848 bw .close ();
6949 }
50+
51+ private static void bfs (int startNode , int endNode ) {
52+ Queue <int []> queue = new LinkedList <>();
53+ queue .offer (new int []{startNode , 0 });
54+ visited [startNode ] = true ;
55+
56+ while (!queue .isEmpty ()) {
57+ int [] cur = queue .poll ();
58+
59+ if (cur [0 ] == endNode ) {
60+ result = cur [1 ];
61+ return ;
62+ }
63+
64+ for (int node : graph [cur [0 ]]) {
65+ if (!visited [node ]) {
66+ visited [node ] = true ;
67+ queue .offer (new int []{node , cur [1 ] + 1 });
68+ }
69+ }
70+ }
71+ }
72+
7073}
0 commit comments