Submission

Status:
[PPPPPP-SSS]

Score: 0

User: hmmm

Problemset: รัฐบาล

Language: cpp

Time: 0.113 second

Submitted On: 2025-04-19 20:05:13

#include<bits/stdc++.h>
using namespace std;
using pii=array<int,3>;
const int N=105;
int pa[N],n,m;
vector<pii> p;

inline int find(int v){
    if(v==pa[v]) return v;
    return pa[v]=find(pa[v]);
}

inline void U(int a,int b){
    a=find(a);
    b=find(b);
    if(a!=b) pa[a]=b;
}

void chk(){
    for(int i=1;i<=n;i++) pa[i]=i;
}

int main(){
    ios::sync_with_stdio(0); cin.tie(0);
    cin >> n >> m;
    chk();
    for(int i=1;i<=m;i++){
        int u,v,w;
        cin >> u >> v >> w;
        p.push_back({w,u,v});
    }
    sort(p.begin(),p.end());
    int ans1=0,ans2=1e9;
    for(auto e:p){
        auto w=e[0];
        auto u=e[1];
        auto v=e[2];
        if(find(u)!=find(v)){
            U(u,v);
            ans1+=w;
        }
    }
    for(int i=1;i<=m;i++){
        int cnt=1,sum=0;
        chk();
        for(int j=1;j<=m;j++){
            if(i==j) continue;
            auto w=p[j-1][0];
            auto u=p[j-1][1];
            auto v=p[j-1][2];
            if(find(u)!=find(v)){
                U(u,v);
                sum+=w;
                cnt++;
            }
        }   
        if(cnt==n && sum!=ans1) ans2=min(ans2,sum);
    }
    cout << ans1 << ' ' << ans2;
}