Submission
Status:
[PP-SSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: Shangbin
Problemset: รัฐบาล
Language: cpp
Time: 0.002 second
Submitted On: 2026-01-21 22:25:08
#include <bits/stdc++.h>
using namespace std;
#define pii pair<int, int>
const int maxm = 1e4 + 5, maxn = 105, inf = 1e9;
int n, m, x, y, c, min_dist = 0, sec_min_dist = inf;
vector<tuple<int, int, int>> graph;
vector<int> used;
int boss[maxn];
int findBoss(int c){
if (boss[c] == c) return c;
else {
boss[c] = findBoss(boss[c]);
return boss[c];
}
}
void resetBoss(){
for (int i = 1; i <= n; i++) boss[i] = i;
}
int main(){
cin >> n >> m;
resetBoss();
for (int i = 0; i < m; i++){
cin >> x >> y >> c;
graph.push_back({c, x, y});
}
sort(graph.begin(), graph.end());
for (int i = 0; i < m; i++){
auto [w, x, y] = graph[i];
int boss_x = findBoss(x), boss_y = findBoss(y);
if (boss_x != boss_y){
min_dist += w;
boss[boss_y] = boss_x;
used.push_back(i);
}
}
cout << min_dist << ' ';
for (auto u : used){
resetBoss();
min_dist = 0;
for (int i = 0; i < m; i++){
if (i == u) continue;
auto [w, x, y] = graph[i];
int boss_x = findBoss(x), boss_y = findBoss(y);
if (boss_x != boss_y){
min_dist += w;
boss[boss_y] = boss_x;
}
}
sec_min_dist = min(sec_min_dist, min_dist);
}
cout << sec_min_dist;
}