BOJ1922_네트워크 연결(크루스칼, C++)
Coding Test
2022. 9. 27. 06:44
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Edge {
int cost;
int a;
int b;
};
bool cmp (Edge a, Edge b) {
if(a.cost >= b.cost) return false;
else return true;
}
int N, M;
int parent[1001];
vector<Edge> edges;
int result;
int getParent(int a) {
if (parent[a] == a) return a;
return parent[a] = getParent(parent[a]);
}
void unionParent(int a, int b) {
a = getParent(a);
b = getParent(b);
if(a < b) parent[b] = a;
else parent[a] = b;
}
int main (void) {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> N >> M;
for(int i = 1; i <= N; i++) {
parent[i] = i;
}
for(int i = 0; i < M; i++) {
int a, b, cost;
cin >> a >> b >> cost;
edges.push_back({cost, a, b});
}
sort(edges.begin(), edges.end(), cmp);
for(int i = 0; i < edges.size(); i++) {
int cost = edges[i].cost;
int a = edges[i].a;
int b = edges[i].b;
if(getParent(a) != getParent(b)) {
unionParent(a, b);
result += cost;
}
}
cout << result << endl;
}
'Coding Test' 카테고리의 다른 글
compare struct와 function 차이 (1) | 2022.09.29 |
---|---|
BOJ1944_복제 로봇 (0) | 2022.09.27 |
BOJ2665_미로만들기 (1) | 2022.09.23 |
BOJ1261_알고스팟 (1) | 2022.09.23 |
BOJ11779_최소비용 구하기2 (0) | 2022.09.22 |