๋ฌธ์ (์ถ์ฒ: 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์ ์ถ๊ฐํด ์ค๋ค.
์๊ฐ๐ค
๋ ๋ ธ๋๋ฅผ ๋ฐฐ์ด๋ก ์ ์ฐ๊ฒฐํด ์ค๋ค๋ฉด ์ฝ๊ฒ ๊ตฌํ ์ ์๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 1756_ํผ์ ๊ตฝ๊ธฐ (0) | 2023.02.24 |
|---|---|
| [Baekjoon] 3187_์์น๊ธฐ ๊ฟ (0) | 2023.02.22 |
| [Baekjoon] 6593_์๋ฒ ๋น๋ฉ (0) | 2023.01.08 |
| [Baekjoon] 13565_์นจํฌ (1) | 2022.12.27 |
| [Baekjoon] 16197_๋ ๋์ (0) | 2022.12.26 |