๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 1240_๋…ธ๋“œ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ

๋ฟŒ์•ผ._. 2023. 1. 15. 15:46

Gold V

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/1240)

< ๋…ธ๋“œ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ >

 

๋ฌธ์ œ ํ’€์ด

 

๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์„ ๋ฐฐ์—ด๋กœ ํ‘œ์‹œํ•˜์—ฌ bfs ํƒ์ƒ‰์„ ํ•˜๋ฉด ๋‘ ๋…ธ๋“œ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 - my solution (Java)

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class _1240_ {
	static int n, arr[][], result;

	public static void main(String[] args) throws IOException {
		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st=new StringTokenizer(bf.readLine());
		
		n=Integer.parseInt(st.nextToken());
		int m=Integer.parseInt(st.nextToken());
		
		arr=new int[n+1][n+1];
		for(int i=0; i<n-1; i++) {
			st=new StringTokenizer(bf.readLine());
			int a=Integer.parseInt(st.nextToken());
			int b=Integer.parseInt(st.nextToken());
			int d=Integer.parseInt(st.nextToken());
			arr[a][b]=d;
			arr[b][a]=d;
		}
		
		for(int i=0; i<m; i++) {
			st=new StringTokenizer(bf.readLine());
			int a=Integer.parseInt(st.nextToken());
			int b=Integer.parseInt(st.nextToken());
			result=0;
			search(a,b);
			System.out.println(result);
		}
	}

	private static void search(int a, int b) {
		boolean[] visited=new boolean[n+1];
		visited[a]=true;
		
		Queue<int[]>queue=new LinkedList<>();
		queue.add(new int[] {a,0});
		
		while(!queue.isEmpty()) {
			int start[]=queue.poll();
			for(int i=0; i<n+1; i++) {
				if(i!=start[0] && !visited[i] && arr[start[0]][i]>0) {
					visited[i]=true;
					if(i==b) {
						result=start[1]+arr[start[0]][i];
						break;
					}
					queue.add(new int[] {i, start[1]+arr[start[0]][i]});
				}
			}
			if(result>0) break;
		}
	}
}

 

Main

- ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜(n), ๋‘ ๋…ธ๋“œ ์Œ(m) ์ž…๋ ฅ

- ํŠธ๋ฆฌ ์ƒ์— ์—ฐ๊ฒฐ๋œ ๋‘ ์ ๊ณผ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฐฐ์—ด๋กœ ์ž…๋ ฅ๋ฐ›์Œ

- ๊ฑฐ๋ฆฌ๋ฅผ ์•Œ๊ณ  ์‹ถ์€ ๋…ธ๋“œ ์Œ ์ž…๋ ฅ๋ฐ›์€ ํ›„ search ํ•จ์ˆ˜ ํ˜ธ์ถœ

 

search

- visited : ๋ฐฉ๋ฌธ ํ™•์ธ 

- Queue : [๋…ธ๋“œ ๋ฒˆํ˜ธ, ๊ฑฐ๋ฆฌ] 

- queue๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉฐ queue์—์„œ ๊ฐ’์„ ๋ฝ‘์•„ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ ํ›„ ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋ผ๋ฉด ์ด๋™ํ•œ๋‹ค. ๊ตฌํ•˜๋ ค๋Š” ๋…ธ๋“œ๋ผ๋ฉด ์ข…๋ฃŒ. ๊ตฌํ•˜๋ ค๋Š” ๋…ธ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด qeuue์— ์ถ”๊ฐ€ํ•ด ์ค€๋‹ค.

 


์ƒ๊ฐ๐Ÿค”

 

๋‘ ๋…ธ๋“œ๋ฅผ ๋ฐฐ์—ด๋กœ ์ž˜ ์—ฐ๊ฒฐํ•ด ์ค€๋‹ค๋ฉด ์‰ฝ๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.