Submission
Status:
[-SSSSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: C12
Problemset: รัฐบาล
Language: cpp
Time: 0.002 second
Submitted On: 2026-01-21 16:18:01
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define pii pair<ll,ll>
#define puii pair<ull,ull>
#define piii pair<ll,pii>
#define ll long long
#define ull unsigned long long
#define mp make_pair
#define mpiii(a,b,c) make_pair(a,make_pair(b,c));
int32_t mod = 1e9+7;
int p[101];
ll n,m,u,v,w;
vector<piii>edge;
piii x;
ll sum;
int check[10000];
int dsu(int i){
// cout << i << ' ' << p[i] << ' ' << (p[i] == i) << '\n';
if(p[i] == i) return i;
p[i] = dsu(p[i]);
return p[i];
}
ll mst(int k){
sum = 0;
for(int i = 1;i <= n;i++){
p[i] = i;
}
if(k != -1){
x = edge[k];
w = x.f;
u = x.s.f;
v = x.s.s;
p[dsu(u)] = p[v];
sum += w;
}
for(int i = 0;i < m;i++){
// if(i == k) continue;
x = edge[i];
w = x.f;
u = x.s.f;
v = x.s.s;
// cout << u << ' ' << dsu(u) << ' ' << v << ' ' << dsu(v) << '\n';
if(dsu(u) != dsu(v)){
sum += w;
if(k == -1){
check[i] = 0;
}
p[dsu(u)] = p[v];
}
}
for(int i = 1;i <= n;i++){
if(dsu(1) != dsu(i)) {
// cout << "FALSE\n";
return LLONG_MAX;
}
}
// cout << k << ' ' << sum << '\n';
return sum;
}
void solve(){
cin >> n >> m;
for(int i = 0;i < m;i++){
cin >> u >> v >> w;
edge.push_back(mp(w,mp(u,v)));
}
for(int i = 0;i < m;i++){
check[i] = 1;
}
sort(edge.begin(),edge.end());
ll main_ans = mst(-1);
ll sec_ans = LLONG_MAX;
for(int i = 0;i < m;i++){
if(check[i]){
sec_ans = min(sec_ans,mst(i));
}
}
cout << main_ans << '\n' << sec_ans;
return;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
// ll q;
// cin >> q;
// while(q--)
solve();
return 0;
}
/*
5 8
1 3 75
3 4 51
2 4 19
3 2 95
2 5 42
5 4 31
1 2 9
3 5 66
*/