๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/21937)
< ์์ >
๋ฌธ์ ํ์ด
B ์์ ์ ํ๊ธฐ ์ํด ๋ฐ๋ก ์ด์ ์ A ์์ ์ ํด์ผ ํ๋ค๋ฉด ์์ B๋ฅผ ํ๊ธฐ ์ํด ๋จผ์ ํด์ผ ํ๋ ์ผ์ ์ฐพ๊ธฐ ์ํด ๊ฑฐ๊พธ๋ก ์ ์ฅํ๋ค. ๊ทธ๋ํ๋ฅผ ์ ์ฅํ ๋ B์ A๋ฅผ ์ ์ฅํ๋ค. ๊ทธ ํ dfs๋ฅผ ์ฌ์ฉํ์ฌ ๋ต์ ๊ตฌํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class _21937_ { // ์์
static ArrayList<ArrayList<Integer>> list;
static boolean visited[];
static int result;
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());
list = new ArrayList<>();
visited = new boolean[n + 1];
result = 0;
for (int i = 0; i < n + 1; i++) {
list.add(new ArrayList<>());
}
for (int i = 0; i < m; i++) {
st = new StringTokenizer(bf.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
list.get(b).add(a);
}
int start = Integer.parseInt(bf.readLine());
visited[start] = true;
dfs(start);
System.out.println(result);
}
private static void dfs(int start) {
for (int i = 0; i < list.get(start).size(); i++) {
if (!visited[list.get(start).get(i)]) {
visited[list.get(start).get(i)] = true;
result += 1;
dfs(list.get(start).get(i));
}
}
}
}
๋ณ์)
n, m : ์์ ํ ๊ฐ์, ์์ ์์ ์ ๋ณด์ ๊ฐ์
list : ๊ทธ๋ํ
visited : ๋ฐฉ๋ฌธ ์ฌ๋ถ
result : ์์ X๋ฅผ ํ๊ธฐ ์ํด ๋จผ์ ํด์ผ ํ๋ ์ผ์ ๊ฐ์
a, b : ์์ A, B
start : ์ค๋ ๋ฐ๋์ ๋๋ด์ผ ํ๋ ์์ X
์์ A, B๋ฅผ ์ ๋ ฅ๋ฐ์ผ๋ฉด ArrayList B์ A๋ฅผ ์ถ๊ฐํ๋ค. ๊ทธ๋ํ๋ฅผ ๋ค ๋ง๋ค๋ฉด dfs ํจ์๋ฅผ ํธ์ถํ๋ค.
dfs์์ ์์ ๊ณผ ์ฐ๊ฒฐ๋ ์์ ์ ์์ง ํ์ง ์์๋ค๋ฉด ์์ ์ ํ๊ณ dfs๋ฅผ ํธ์ถ์ ๋ฐ๋ณตํ๋ค.
์์ X๋ฅผ ํ๊ธฐ ์ํด ๋จผ์ ํด์ผ ํ๋ ์ผ์ ๊ฐ์์ธ result๋ฅผ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 16198_์๋์ง ๋ชจ์ผ๊ธฐ (0) | 2023.12.12 |
---|---|
[Baekjoon] 1189_์ปด๋ฐฑํ (1) | 2023.12.11 |
[Baekjoon] 1283_๋จ์ถํค ์ง์ (1) | 2023.12.07 |
[Baekjoon] 1446_์ง๋ฆ๊ธธ (0) | 2023.12.06 |
[Baekjoon] 4883_์ผ๊ฐ ๊ทธ๋ํ (2) | 2023.12.05 |