μκ° μ ν | λ©λͺ¨λ¦¬ μ ν | μ λ΅ λΉμ¨ |
2 μ΄ | 128 MB | 43.773% |
λ¬Έμ
μ²νκ³Ό λ°±νμΌλ‘ λ νμ λλμ΄ νμ μ νλ € νλ€. νμ§λ§ μλ‘ κ°μ νμ νκΈ° μ«μ΄νλ μ¬λλ€μ΄ μκ²Όλ€.
μ΄μ μ°λ¦¬κ° ν μΌμ λ€μκ³Ό κ°λ€. μ¬λλ€μ΄ κ°κ° μ«μ΄νλ μ¬λλ€μ μ λ³΄κ° μ£Όμ΄μ Έ μμ λ, κ·Έ μ¬λλ€μ μꡬλ₯Ό μμ©νμ¬ μλ‘ μ«μ΄νλ μ¬λμ κ°μ νμ λ£μ§ μμΌλ € νλ€. μ΄ μ‘°κ±΄μ λ§μ‘±νμ¬ nλͺ μ μ¬λλ€ λ νμΌλ‘ λλλ νλ‘κ·Έλ¨μ μμ±νμ¬λΌ.
μ€νμ μ μ§ λ¬Έμ λ‘, κΌ λ΄κ° νΌ λ°©λ²μ΄ μλλλΌλ λ€μν λ°©λ²κ³Ό λ΅μ΄ μ‘΄μ¬νλ€.
ν΄κ²°
key point, μ΄μλ λ Έλλ₯Ό ν°μ, νλμμΌλ‘ λ²κ°μκ°λ©΄μ μμΉ νλ€.
ν°μμ 1, νλμμ -1λ‘ λ³΄κ³ ννλ³κ³Ό λμμ λ°©λ¬Ένλ¨λ νκΈ° μν΄μ chkλ°°μ΄μ μ μ₯νλ€.
- iλ² μ¬λμ΄ μ«μ΄νλ μ¬λλ€μ μ λ³΄κ° μ£Όμ΄μ§λ©΄, iλ κ·Έ μ¬λλ€κ³Ό κ°μ νμ΄ λμ΄μ μλλ€.
- λ°λΌμ, μλλ°©μ΄ iλ₯Ό μ«μ΄νμ§ μμλ, iλ² μ¬λμ΄ μ«μ΄νλ μ¬λλ€μ μμλ‘ i_a, i_b ... λΌκ³ λνλ΄λ©΄,
iμ i_a, i_b... λ μλ‘ μ«μ΄νλ κ΄κ³λ‘ μ§μ νλ€. → μλ°©ν₯ κ·Έλν - 1λ²μ 무쑰건 ν°ν(1)μΌλ‘ λ³΄κ³ dfsλ₯Ό μμνμ¬ μ°κ²°λμ΄ μλ λ Έλμ λν΄μ λ°λμκΉ(-1)λ‘ μΉ νλ€.
- μ΄λ κ² λͺ¨λ λ Έλμ λν΄μ μκΉμ΄ λ€ μΉ ν΄μ§λκΉμ§ λ°λ³΅λ¬Έμ΄ μ€νλλ€.
- κ·Έλ¦¬κ³ λ€μ ν λ² nλ§νΌ λ°λ³΅λ¬Έμ λλ©΄μ 1μ΄λΌλ©΄ ν°ν, -1μ΄λΌλ©΄ νλνμ λΆλ₯νκ³
- κ°κ°μ νμ μΈμμμ μν μ¬λλ€μ μΆλ ₯νλ€.
λμλ testcase
4
1 3
1 4
1 4
0
μ΄ ν
μ€νΈμΌμ΄μ€λ₯Ό λ³΄κ³ , μ²μμλ λ¨λ°©ν₯λλ‘ λͺ¨λ μ£Όμ΄μ§λκΉ λ°λ‘ μλ°©ν₯μΌλ‘ μ²λ¦¬μν΄μ€λ λκ² λ€ μΆμλ€κ°
iλ i_aλ₯Ό μ«μ΄νλλ°, i_aλ iλ₯Ό μ«μ΄νμ§ μμ μλ μκ³ , μ«μ΄νλ μ¬λμ΄ κ·Έλ₯ μλ μ¬λλ μμ μ μκ³ ..
κ·Έλμ λͺ¨λ κ²½μ°μ λν΄μ λ μ½κ² μ²λ¦¬νκΈ° μν΄μ μλ°©ν₯μΌλ‘ μ μ₯ν΄λ¨λ€.
μ½λ
λ©λͺ¨λ¦¬ | μκ° |
1988KB | 0ms |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#include <iostream>
#include <vector>
using namespace std;
int n, chk[105];
vector<int> white, blue, arr[105];
void dfs(int num, int team) {
chk[num] = team;
for (auto child : arr[num]) {
if (chk[child]) continue;
dfs(child, team * -1);
}
}
int main() {
scanf("%d", &n);
for (int i = 1, a; i <= n; i++) {
scanf("%d", &a);
for (int j = 0, b; j < a; j++) {
scanf("%d", &b);
arr[i].push_back(b);
arr[b].push_back(i);
}
}
for (int i = 1; i <= n; i++) {
if (!chk[i]) {
dfs(i, 1);
}
}
// white 1, blue -1 λλκΈ°
for (int i = 1; i <= n; i++) {
if (chk[i] == 1) {
white.push_back(i);
}
else {
blue.push_back(i);
}
}
vector<int>::iterator it;
printf("%d\n", white.size());
for (it = white.begin(); it != white.end(); it++) {
printf("%d ", *it);
}
printf("\n%d\n", blue.size());
for (it = blue.begin(); it != blue.end(); it++) {
printf("%d ", *it);
}
return 0;
}
|
cs |
'π₯ PS(Problem Solving) π₯ > BOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] #13414 μκ°μ μ² (0) | 2020.05.02 |
---|---|
[BOJ] #1748 μ μ΄μ΄ μ°κΈ° 1 (0) | 2020.04.23 |
[BOJ] #1068 νΈλ¦¬ (1) | 2020.04.17 |
[BOJ] #2941 ν¬λ‘μν°μ μνλ²³ (0) | 2020.04.16 |
[BOJ] #1021 νμ νλ ν (0) | 2020.01.11 |
λκΈ