https://www.acmicpc.net/problem/1707
ํ์ด
๊ฐ ๋ ธ๋๋ง๋ค 1๊ณผ -1์ ๋ฒ๊ฐ์ ๋งค๊ธฐ๋ฉด์ ๊ทธ๋ํ ํ์ (BFS/DFS):
1์ด ๋ค์ด๊ฐ์ผํ ๋ ธ๋์ ์ด๋ฏธ -1์ด ๋ค์ด๊ฐ์์ผ๋ฉด NO
-1์ด ๋ค์ด๊ฐ์ผํ ๋ ธ๋์ ์ด๋ฏธ 1์ด ๋ค์ด๊ฐ์์ผ๋ฉด NO
๋ณ ๋ฌธ์ ์์ด ๊ทธ๋ํ ํ์์ด ๋๋๋ฉด YES
์ฝ๋
๋๋ณด๊ธฐ
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int K = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
outerLoop:
while (K-- > 0) {
StringTokenizer st = new StringTokenizer(br.readLine());
int V = Integer.parseInt(st.nextToken());
int E = Integer.parseInt(st.nextToken());
ArrayList<ArrayList<Integer>> edges = new ArrayList<>();
for (int i = 0; i < V + 1; i++) {
edges.add(new ArrayList<>());
}
for (int i = 0; i < E; i++) {
st = new StringTokenizer(br.readLine());
int u = Integer.parseInt(st.nextToken());
int v = Integer.parseInt(st.nextToken());
edges.get(u).add(v);
edges.get(v).add(u);
}
int[] color = new int[V + 1];
for (int i = 1; i <= V; i++) {
if (color[i] == 0) {
color[i] = 1;
Queue<Integer> que = new LinkedList<>();
que.add(i);
while (!que.isEmpty()) {
int cur = que.remove();
for (int dest : edges.get(cur)) {
if (color[dest] == color[cur]) {
sb.append("NO\n");
continue outerLoop;
}
if (color[dest] == 0) {
color[dest] = color[cur] * -1;
que.add(dest);
}
}
}
}
}
sb.append("YES\n");
}
System.out.println(sb);
br.close();
}
}
'Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋ฐฑ์ค 2411 - ์์ดํ ๋จน๊ธฐ (0) | 2024.04.12 |
---|---|
[Java] ๋ฐฑ์ค 31716 - ํ๋๋ชจ๋น์ค ์์จ ์ฃผํ ํ ์คํ 1 (0) | 2024.04.10 |
[Java] ๋ฐฑ์ค 16724 - ํผ๋ฆฌ ๋ถ๋ ์ฌ๋์ด (0) | 2024.03.28 |
[Java] ๋ฐฑ์ค 7579 - ์ฑ (0) | 2024.03.27 |
[Java] ๋ฐฑ์ค 21276 - ๊ณ๋ณด ๋ณต์๊ฐ ํธ์ (0) | 2024.03.26 |