Submission
Status:
[PP-SSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: ki
Problemset: รัฐบาล
Language: cpp
Time: 0.003 second
Submitted On: 2026-03-20 22:11:06
#include<iostream>
#include<vector>
#include<functional>
#include<numeric>
using namespace std;
using tp=tuple<int,int,int>;
int n,m;
int main(){
cin>>n>>m;
vector<tp>v(m);
for(auto&[z,x,y]:v){
cin>>x>>y>>z;
x--;y--;
}
sort(v.begin(),v.end());
vector<int>p(n);
iota(p.begin(),p.end(),0);
function<int(int)>fset=[&](int x){
return (p[x]==x?x:p[x]=fset(p[x]));
};
auto mg=[&](int x,int y){
if((x=fset(x))==(y=fset(y)))return;
p[y]=x;
};
int ans=0,ans2=1e9;
vector<int>s;
for(int i=0;i<m;i++){
auto[z,x,y]=v[i];
if(fset(x)==fset(y))continue;
mg(x,y);
s.emplace_back(i);
ans+=z;
}
for(int i=0;i<s.size();i++){
iota(p.begin(),p.end(),0);
int xx=0;
for(int j=0;j<m;j++){
auto[z,x,y]=v[j];
if(fset(x)==fset(y))continue;
if(j==s[i])continue;
mg(x,y);
xx+=z;
}
ans2=min(ans2,xx);
}
cout<<ans<<' '<<ans2<<'\n';
}