Submission
Status:
[PPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: Neozaawwman1
Problemset: รัฐบาล
Language: cpp
Time: 0.030 second
Submitted On: 2026-03-14 10:46:12
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int N,M;
int pa[105];
struct Data{
int u,v,id;
ll w;
bool operator<(const Data&d2) const{
return w>d2.w;
}
};
priority_queue<Data> pq;
vector<Data> ed;
vector<int> used;
int findpa(int a){
if(pa[a]==a)return a;
return pa[a]=findpa(pa[a]);
}
void reset(int n){
for(int i=1; i<=n; i++){
pa[i]=i;
}
}
void clear(){
while(!pq.empty()){
pq.pop();
}
}
int main(){
ios_base::sync_with_stdio(0),cin.tie(0);
cin>>N>>M;
reset(N);
for(int i=0; i<M; i++){
Data inp;cin>>inp.u>>inp.v>>inp.w;
inp.id=i;
pq.push(inp);
ed.push_back(inp);
}
int n = N;
ll ct=0;
while(!pq.empty() && n>1){
Data cur = pq.top();pq.pop();
int u = cur.u;
int v = cur.v;
ll w =cur.w;
int pau=findpa(u);
int pav=findpa(v);
if(pau==pav)continue;
pa[pau]=pav;
ct+=w;
used.push_back(cur.id);
n--;
}
cout<<ct<<' ';
ll ans = LLONG_MAX;
for(auto block:used){
reset(N);
n = N;
clear();
for(auto x:ed){
pq.push(x);
}
ll ct=0;
while(!pq.empty() && n>1){
Data cur = pq.top();pq.pop();
if(cur.id==block)continue;
int u = cur.u;
int v = cur.v;
ll w =cur.w;
int pau=findpa(u);
int pav=findpa(v);
if(pau==pav)continue;
pa[pau]=pav;
ct+=w;
n--;
}
if(n==1){
ans = min(ans,ct);
}
}
cout<<ans;
return 0;
}