
백준 1197문제
#include <iostream>
#include <tuple>
#include <algorithm>
#include <vector>
using namespace std;
#define PS_INPUT cout.tie(NULL); cin.tie(NULL); ios_base::sync_with_stdio(false)
#define endl '\n'
#define INF 1e9
#define pii pair<int, int>
#define ll long long
#define SIZE 10001
int V, E;
bool check;
ll ans;
int parent[SIZE];
vector<tuple<int, int, int>> graph;
void initInput() {
cin >> V >> E;
for (int i = 1; i <= V; i++) parent[i] = i;
int a, b, c;
for (int i = 0; i < E; i++) {
cin >> a >> b >> c;
graph.push_back({c, a, b});
}
sort(graph.begin(), graph.end());
}
int findParent(int x) {
if (parent[x] == x) return x;
return parent[x] = findParent(parent[x]);
}
bool unionParent(int v1, int v2) {
int u = findParent(v1);
int v = findParent(v2);
if (u == v) return false;
else {
parent[u] = v;
return true;
}
}
void kruskal() {
for (int i = 0; i < E; i++) {
if (unionParent(get<1>(graph[i]), get<2>(graph[i])))
ans += get<0>(graph[i]);
}
}
void solve() {
kruskal();
cout << ans << endl;
}
int main(void)
{
PS_INPUT;
initInput();
solve();
return 0;
}'Computer Science > Algorithm' 카테고리의 다른 글
| [C/C++] Topology Sort (graph) (0) | 2023.06.27 |
|---|---|
| [C/C++] prim algorithm (MST) (0) | 2023.06.27 |
| [C/C++] 에라토스테네스의 체 (0) | 2023.05.30 |
| [C/C++] BFS(Breadth-First Search) (0) | 2023.05.30 |
| [C/C++] DFS(Depth-First Search) (0) | 2023.05.30 |