Recent Posts
Notice
No Rules Rules
행성 연결 (feat. 백준, 16398번) 본문
728x90
반응형
행성 연결
https://www.acmicpc.net/problem/16398
// woohyeon.kim
// kim519620.tistory.com
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
vector<pair<int, int>> arr[1001]; // 행성 j, 관리비용
bool visit[1001]{false};
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q; // 관리비용, 행성 j
int main() {
ios::sync_with_stdio(false), cin.tie(NULL);
int N, next, nnext, cost;
long long ans = 0;
cin >> N;
for(register int i = 1, j, c; i <= N; ++i)
for(j = 1; j <= N; ++j)
cin >> c, arr[i].push_back(make_pair(j, c)), arr[j].push_back(make_pair(i, c));
q.push(make_pair(0, 1));
while(!q.empty()){
next = q.top().second, cost = q.top().first; q.pop();
if(visit[next])
continue;
visit[next] = true;
ans += cost;
for(auto& v : arr[next]){
nnext = v.first, cost = v.second;
if(!visit[nnext])
q.push(make_pair(cost, nnext));
}
}
cout << ans;
return 0;
}
// *&)*@*
반응형
최소 스패닝 트리를 구하는 문제입니다.
저는 프림 알고리즘을 사용하여 풀이하였습니다.
총 관리비용은 int의 범위를 벗어날 수 있으므로 64비트 자료형을 사용해야 합니다.
728x90
반응형
'생활 > 코테' 카테고리의 다른 글
Moocast (feat. 백준, 14167번) (0) | 2023.03.16 |
---|---|
최소공배수 (feat. 백준, 13241번) (0) | 2023.03.16 |
농구 경기 (feat. 백준, 1159번) (0) | 2023.03.15 |
모든 순열 (feat. 백준, 10974번) (0) | 2023.03.15 |
조별과제를 하려는데 조장이 사라졌다 (feat. 백준, 15727번) (0) | 2023.03.15 |
Comments