반응형

https://www.acmicpc.net/problem/6497

 

6497번: 전력난

성진이는 한 도시의 시장인데 거지라서 전력난에 끙끙댄다. 그래서 모든 길마다 원래 켜져 있던 가로등 중 일부를 소등하기로 하였다. 길의 가로등을 켜 두면 하루에 길의 미터 수만큼 돈이 들

www.acmicpc.net

 

모든 집을 연결할 수 있는 최소 비용을 구하여 절약할 수 있는 최대 비용을 구해주었습니다.

 

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int m, n, x, y, z, maxSum, sum, p[200000];
vector<int> edges[200000];
int findParent(int x) {
	if (p[x] == x) return x;
	else return p[x] = findParent(p[x]);
}
int main() {
	while (1) {
		scanf("%d %d", &m, &n);
		maxSum = sum = 0;
		for (int i = 0; i < m; i++) p[i] = i;
		if (m == 0) break;
		for (int i = 0; i < n; i++) {
			scanf("%d %d %d", &x, &y, &z);
			edges[i] = { z, x, y };
			maxSum += z;
		}
		sort(edges, edges + n);
		for (int i = 0; i < n; i++) {
			int pa = findParent(edges[i][1]);
			int pb = findParent(edges[i][2]);
			if (pa != pb) {
				p[pa] = pb;
				sum += edges[i][0];
			}
		}
		printf("%d\n", maxSum - sum);
	}
}
반응형

'Algorithm' 카테고리의 다른 글

백준 2141, 2285 : 우체국  (0) 2021.11.17
백준 13334 : 철로  (0) 2021.11.17
백준 15926 : 현욱은 괄호왕이야!!  (0) 2021.11.17
백준 5214 : 환승  (0) 2021.11.17
백준 16398 : 행성 연결  (0) 2021.11.17

+ Recent posts