티스토리 뷰
728x90
문제 링크
풀이
기본적인 유니온 파인드 문제입니다.
자세한 설명은 다른 블로그를 참고해주세요.
정답 코드
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
using namespace std;
int n, m;
int par[11'111];
struct Edge {
int u, v, c;
Edge(int u = 0, int v = 0, int c = 0) : u(u), v(v), c(c) {}
};
vector<Edge> p;
int find(int x) {
if (par[x] == -1) return x;
return par[x] = find(par[x]);
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
memset(par, -1, sizeof(par));
cin >> n >> m;
while (m--) {
int u, v, c;
cin >> u >> v >> c;
p.emplace_back(u, v, c);
}
sort(all(p), [&](const auto &a, const auto &b) {
return a.c < b.c;
});
int ans = 0;
for (Edge &e: p) {
auto[u, v, c] = e;
u = find(u);
v = find(v);
if (u != v) {
par[u] = v;
ans += c;
}
}
cout << ans;
}
728x90
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[BOJ] 백준 10942 팰린드롬? (0) | 2021.03.07 |
---|---|
[BOJ] 백준 1202 보석 도둑 (0) | 2021.03.07 |
[BOJ] 백준 1007 벡터 매칭 (0) | 2021.03.07 |
[BOJ] 백준 2636 치즈 (KOI 2000 초등부) (2) | 2021.02.18 |
[BOJ] 백준 1244 스위치 켜고 끄기 (KOI 2000 초등부) (0) | 2021.02.18 |
댓글