๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/24447)
< ์๊ณ ๋ฆฌ์ฆ ์์ - ๋๋น ์ฐ์ ํ์ 4 >
๋ฌธ์ ํ์ด
bfs๋ก ํ์ํ๋ฉด์ ๋ ธ๋์ ๊น์ด์ ๋ฐฉ๋ฌธ ์์๋ฅผ ์ ์ฅํด ์ค๋ค.
์ฌ๊ธฐ์ ์ค์ํ ์ ์ ๋ ธ๋์ ๊น์ด์ ๋ฐฉ๋ฌธ ์์, ๊ฒฐ๊ณผ ๊ฐ์ ์ ์ฅํ ๋ long ๊ฐ์ผ๋ก ์ ์ธํด ์ค์ผ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class _24447_ {
static ArrayList<ArrayList<Integer>> arr;
static long t[], d[];
public static void main(String[] args) throws IOException {
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(bf.readLine());
int n=Integer.parseInt(st.nextToken());
int m=Integer.parseInt(st.nextToken());
int r=Integer.parseInt(st.nextToken())-1;
arr=new ArrayList<>();
t=new long[n];
d=new long[n];
for(int i=0; i<n; i++) {
arr.add(new ArrayList<>());
d[i]=-1;
}
for(int i=0; i<m; i++) {
st=new StringTokenizer(bf.readLine());
int a=Integer.parseInt(st.nextToken())-1;
int b=Integer.parseInt(st.nextToken())-1;
arr.get(a).add(b);
arr.get(b).add(a);
}
for(int i=0; i<n; i++) {
Collections.sort(arr.get(i));
}
d[r]=0;
t[r]=1;
bfs(r);
long result=0;
for(int i=0; i<n; i++) {
result+=d[i]*t[i];
}
System.out.println(result);
}
private static void bfs(int r) {
Queue<Integer>queue=new LinkedList<>();
queue.add(r);
long t_num=t[r];
while(!queue.isEmpty()) {
int num=queue.poll();
for(int i=0; i<arr.get(num).size(); i++) {
int temp=arr.get(num).get(i);
if(d[temp]==-1){
d[temp]=d[num]+1;
t[temp]=++t_num;
queue.add(temp);
}
}
}
}
}
Main
- ์ ์ ์ ์ (n), ๊ฐ์ ์ ์ (m), ์์ ์ ์ (r) ์ ๋ ฅ
- arr : ์ธ์ ๋ฆฌ์คํธ
t: ๋ ธ๋์ ๋ฐฉ๋ฌธ ์์
d : ๋ ธ๋์ ๊น์ด (๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ธฐ ์ํด -1๋ก ์ด๊ธฐํ)
- ์๋ฐฉํฅ์ผ๋ก ๊ทธ๋ํ ์ ์ฅ ํ ์ค๋ฆ์ฐจ์์ ์ํด ์ ๋ ฌ
- ์์ ์ ์ ์ ๋ ธ๋์ ๊น์ด๋ 0์ด๊ณ ๋ ธ๋์ ๋ฐฉ๋ฌธ ์์๋ 1๋ก ์ด๊ธฐํ ํ bfs ํจ์ ํธ์ถ
- result : ๋ชจ๋ ๋ ธ๋์ ๋ํ ๋ ธ๋์ ๋ฐฉ๋ฌธ ์์ x ๋ ธ๋์ ๊น์ด
bfs(์์ ์ ์ r)
- queue์ ์์ ์ ์ ์ถ๊ฐ ๋ฐ ๋ ธ๋์ ๋ฐฉ๋ฌธ ์์๋ฅผ ์ํด ์ด๊ธฐ๊ฐ ์ ์ฅ
- queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณต -> ์ธ์ ์ ์ ์ ์๋งํผ ๋ฐ๋ณต -> ๋ ธ๋์ ๊น์ด๊ฐ -1์ด๋ฉด ์์ง ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ ๋ป์ด๋ฏ๋ก ๋ ธ๋์ ๊น์ด ์ ์ฅ ๋ฐ ๋ ธ๋์ ๋ฐฉ๋ฌธ ์์ ์ ์ฅ ํ queue์ ์ถ๊ฐ
* ๋ ธ๋์ ๊น์ด๋ ์ ๋ ธ๋์ ๊น์ด +1์ด๋ค.
๋ง๋ฌด๋ฆฌ๐ค
long ๊ฐ ๋ฒ์ ๋๋ฌธ์ ํ๋ ธ์๋ค...
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 24481_์๊ณ ๋ฆฌ์ฆ ์์ - ๊น์ด ์ฐ์ ํ์ 3 (0) | 2023.06.04 |
---|---|
[Baekjoon] 24446_์๊ณ ๋ฆฌ์ฆ ์์ - ๋๋น ์ฐ์ ํ์ 3 (1) | 2023.06.03 |
[Baekjoon] 9944_NxM ๋ณด๋ ์์ฃผํ๊ธฐ (0) | 2023.06.01 |
[Baekjoon] 23747_์๋ (0) | 2023.05.30 |
[Baekjoon] 17265_๋์ ์ธ์์๋ ์ํ๊ณผ ํจ๊ป (0) | 2023.05.30 |