From b1b641f05a0b28cb656a03e4272c66cc2bad65f6 Mon Sep 17 00:00:00 2001 From: oncsr Date: Tue, 29 Apr 2025 16:06:06 +0900 Subject: [PATCH] =?UTF-8?q?[20250429]=20BOJ=20/=20P2=20/=20=EB=AF=BC?= =?UTF-8?q?=ED=98=81=EC=9D=B4=EC=9D=98=20=EA=B2=8C=EC=9E=84=20=ED=8C=8C?= =?UTF-8?q?=ED=8B=B0=20/=20=EA=B6=8C=ED=98=81=EC=A4=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\354\236\204 \355\214\214\355\213\260.md" | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 "khj20006/202504/29 BOJ P2 \353\257\274\355\230\201\354\235\264\354\235\230 \352\262\214\354\236\204 \355\214\214\355\213\260.md" diff --git "a/khj20006/202504/29 BOJ P2 \353\257\274\355\230\201\354\235\264\354\235\230 \352\262\214\354\236\204 \355\214\214\355\213\260.md" "b/khj20006/202504/29 BOJ P2 \353\257\274\355\230\201\354\235\264\354\235\230 \352\262\214\354\236\204 \355\214\214\355\213\260.md" new file mode 100644 index 00000000..18af9f8b --- /dev/null +++ "b/khj20006/202504/29 BOJ P2 \353\257\274\355\230\201\354\235\264\354\235\230 \352\262\214\354\236\204 \355\214\214\355\213\260.md" @@ -0,0 +1,42 @@ +```cpp +#include +#include +#include +using namespace std; + +int N, M, Q; +multiset S[100001]{}; +int A[100001]{}, C[100001]{}, r[100001]{}, ans[100001]{}; + +int f(int x) { return x == r[x] ? x : r[x] = f(r[x]); } + +int main() { + cin.tie(0)->sync_with_stdio(0); + + cin >> N >> M >> Q; + for (int i = 1; i <= N; i++) { + cin >> A[i]; + S[i].insert(A[i]); + C[A[i]]++; + } + for (int i = 1; i <= M; i++) ans[i] = C[i] == 1 ? 0 : -1; + + iota(r, r + N + 1, 0); + + for (int a, b, t = 1; Q--; t++) { + cin >> a >> b; + int x = f(a), y = f(b); + if (x == y) continue; + if (S[x].size() > S[y].size()) swap(x, y); + for (int j : S[x]) { + S[y].insert(j); + if (C[j] == S[y].count(j) && ans[j] < 0) ans[j] = t; + } + S[x] = multiset(); + r[x] = y; + } + + for (int i = 1; i <= M; i++) cout << ans[i] << '\n'; + +} +```