Submission
Status:
[PP-SSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: hyyh
Problemset: รัฐบาล
Language: cpp
Time: 0.003 second
Submitted On: 2026-01-24 00:14:26
#include <iostream>
#include <math.h>
#include <vector>
#include <string>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <iomanip>
#include <set>
#include <bitset>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using piii = tuple<int,int,int>;
using piiii = tuple<int,int,int,int>;
#define endl '\n'
#define f first
#define s second
int const N = 110;
int const N2 = 10010;
vector<piiii> edge;
int DsU[N];
vector<int> ban;
#define int long long
int find(int n){
if(n == DsU[n]) return n;
else return DsU[n] = find(DsU[n]);
}
signed main(){
ios_base::sync_with_stdio(0);cin.tie(0);
for(int i = 0;i < N;i++) DsU[i] = i;
int n;cin >> n;
int m;cin >> m;
for(int i = 0;i < m;i++){
int a,b,c;cin >> a>> b >> c;
edge.emplace_back(c,b,a,i);
}
int sum = 0;
sort(edge.begin(),edge.end());
for(auto [w,a,b,ind]:edge){
if(find(a) != find(b)){
sum += w;
DsU[find(a)] = find(b);
ban.emplace_back(ind);
}
}
int ans = 1e9;
for(auto i:ban){
int sum2 = 0;
for(int i = 0;i < N;i++) DsU[i] = i;
for(auto [w,a,b,ind]:edge){
if(ind != i && find(a) != find(b)){
sum2 += w;
DsU[find(a)] = find(b);
}
}
ans = min(ans,sum2);
}
cout << sum << " " << ans;
}