-
[BOJ]백준 21924번: 도시 건설(C++)/MSTProblem Solving/BOJ(백준) 2021. 6. 17. 01:01
https://www.acmicpc.net/problem/21924
기본 MST 문제~!~!~!~!~!
#include <cstdio> #include <vector> #include <queue> #define pii pair<int,int> #define INF 987654321 using namespace std; vector<vector<pii>> g; int n, m; long long sum; long long prim() { priority_queue<pii> pq; vector<int> cost(n + 2, INF); vector<bool> visit(n + 2, false); long long ans = 0; pq.push(make_pair(0, 1)); cost[1] = 0; while (!pq.empty()) { pii cur = pq.top(); pq.pop(); cur.first *= -1; if (visit[cur.second])continue; visit[cur.second] = 1; for (auto x : g[cur.second]) if((cost[x.second]>x.first)&&!visit[x.second]){ cost[x.second] = x.first; pq.push(make_pair(-cost[x.second], x.second)); } } for (int i = 1; i <= n; i++) { if (cost[i] == INF)return -1; ans += cost[i]; } return ans; } int main() { scanf("%d%d", &n, &m); g = vector<vector<pii>>(n + 1); for (int i = 0, a, b, c; i < m; i++) { scanf("%d%d%d", &a, &b, &c); g[a].push_back(make_pair(c, b)); g[b].push_back(make_pair(c, a)); sum += c; } long long ans = prim(); printf("%lld", ans == -1 ? -1 : sum - ans); return 0; }
'Problem Solving > BOJ(백준)' 카테고리의 다른 글
[BOJ]백준 1219번: 오민식의 고민(C++)/Bellman-Ford (0) 2021.06.21 [BOJ]백준 17836번: 공주님을 구해라!(C++)/BFS (427) 2021.06.17 [BOJ]백준 21609번: 상어 중학교(C++)/Simulation (0) 2021.06.14 [BOJ]백준 7682번: 틱택토(C++)/BackTracking (0) 2021.06.13 [BOJ]백준 21776번: 가희와 읽기 쓰기 놀이(Python) (418) 2021.06.13