Submission
Status:
[PP-SSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: tull
Problemset: รัฐบาล
Language: cpp
Time: 0.002 second
Submitted On: 2026-06-01 00:21:57
#pragma GCC optimize("O3,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define bp '\n'
#define ld long double
#define vp cout<<'\n';
#define all(A) A.begin(),A.end()
using pii=pair<int,int>;
const int MOD=1e9+7;
const int MNLL=-1e18;
const int MXLL=1e18;
const int N=2e5+10;
const string sans[]={"no","yes"};
struct DSU{
vector<int>par,sz;
DSU(int n):par(n+10),sz(n+10,1){
iota(par.begin(),par.end(),0);
}
int Find(int a){
return par[a]==a?a:par[a]=Find(par[a]);
}
bool Same(int a,int b){
return Find(a)==Find(b);
}
void Union(int a,int b){
a=Find(a);
b=Find(b);
if(sz[b]>sz[a])swap(a,b);
par[b]=a;
sz[a]+=sz[b];
}
};
vector<pair<int,int>>p;
int MST(vector<array<int,3>>&edge,int m,int dl,int dr,int mode){
DSU dsu(111);
int sum=0;
for(int i=0;i<m;++i){
auto[x,l,r]=edge[i];
if(dsu.Same(l,r) or (dl==l and dr==r))continue;
sum+=x;
dsu.Union(l,r);
if(mode==1){
p.emplace_back(make_pair(l,r));
}
}
return sum;
}
signed main(){
cin.tie(nullptr)->sync_with_stdio(false);
int n,m,sum=0,sum2=MXLL,l,r,x;
cin>>n>>m;
vector<array<int,3>>edge(m);
for(int i=0;i<m;++i){
cin>>l>>r>>x;
if(l>r)swap(l,r);
edge[i]={x,l,r};
}
sort(all(edge));
cout<<MST(edge,m,-1,-1,1)<<' ';
for(auto&[l,r]:p){
sum2=min(sum2,MST(edge,m,l,r,0));
}
cout<<sum2;
}