๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/12893)
< ์ ์ ์ >
๋ฌธ์ ํ์ด & ์๊ฐ
bfs๋ฅผ ์ฌ์ฉํด์ ์ฐํธ ๊ด๊ณ์ ์ ๋ ๊ด๊ณ๋ฅผ ๊ตฌ๋ถํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class _12893_ { // ์ ์ ์
static ArrayList<ArrayList<Integer>> arr;
static boolean team[], visited[], flag;
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());
arr = new ArrayList<>();
team = new boolean[n];
visited = new boolean[n];
flag = false;
for (int i = 0; i < n; i++) {
arr.add(new ArrayList<>());
}
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++) {
if (!visited[i]) {
visited[i] = true;
team[i] = true;
search(i);
}
}
if (flag)
System.out.println(0);
else
System.out.println(1);
}
private static void search(int idx) {
Queue<Integer> queue = new LinkedList<>();
queue.add(idx);
while (!queue.isEmpty()) {
int num = queue.poll();
for (int i = 0; i < arr.get(num).size(); i++) {
int next = arr.get(num).get(i);
if (!visited[next]) {
visited[next] = true;
team[next] = !team[num];
queue.add(next);
} else {
if (team[num] != !team[next]) {
flag = true;
return;
}
}
}
}
}
}
Main
- ์ฌ๋์ ์(n). ์ ๋๊ด๊ณ์ ์(m) ์ ๋ ฅ
- arr : ์ ๋ ๊ด๊ณ ์ธ์ ๋ฆฌ์คํธ
team : ์ฐํธ, ์ ๋ ๊ด๊ณ ์ ์ฅ [true, false๋ผ๋ฆฌ ๊ฐ์ ํ]
visited : ๋ฐฉ๋ฌธ ์ฌ๋ถ
flag : ์ด๋ก ์ฑ๋ฆฝ ์ฌ๋ถ
- ์ ๋ ๊ด๊ณ์ ์๋ ์ฌ๋ a, b ์ ๋ ฅ ํ ์ธ์ ๋ฆฌ์คํธ ์ ์ฅ
- ์ฌ๋์ ์๋งํผ ํ์ํ์ฌ ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ์ด๋ผ๋ฉด ๋ฐฉ๋ฌธ ํ์ / team์ true๋ก ์ ์ฅ / search ํจ์ ํธ์ถ
- flag ์ฌ๋ถ์ ๋ฐ๋ผ ์ด๋ก ์ฑ๋ฆฝ ๊ฐ๋ฅํ์ง ์๋์ง ์ถ๋ ฅ
Search
- queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณต -> num์ ์ธ์ ๋ฆฌ์คํธ ํ์ํ์ฌ ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ์ด๋ผ๋ฉด ๋ฐฉ๋ฌธ ํ์ / ํ์ฌ ์ฌ๋๊ณผ ์ ๋ ๊ด๊ณ๋ก ํ์ / queue์ ์ถ๊ฐ But ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๊ณณ์ด๋ผ๋ฉด ์ ๋ ๊ด๊ณ๊ฐ ๋ง๋์ง ํ์ธํ์ฌ ์ ๋ ๊ด๊ณ๊ฐ ์๋๋ผ๋ฉด ์ด๋ก ์ด ์ฑ๋ฆฝํ์ง ์์ผ๋ฏ๋ก ์ข ๋ฃ

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 16562_์น๊ตฌ๋น (0) | 2023.06.27 |
---|---|
[Baekjoon] 1043_๊ฑฐ์ง๋ง (0) | 2023.06.26 |
[Baekjoon] 7662_์ด์ค ์ฐ์ ์์ ํ (0) | 2023.06.19 |
[Baekjoon] 19538_๋ฃจ๋จธ (0) | 2023.06.15 |
[Baekjoon] 13265_์์น ํ๊ธฐ (0) | 2023.06.13 |