Untitled

 avatar
user_0483151
plain_text
17 days ago
1.3 kB
2
Indexable
// ThonqRiu
#include <bits/stdc++.h>
#define endl '\n'
#define maxn 50005
#define MOD 100000000000007
#define Task "D"
#define ll long long
using namespace std;
int n,m,root[505],cnt;
struct phuba{
    int u,v,w;
};
phuba a[maxn];
bool cmp(phuba &a, phuba &b){
    return a.w < b.w;
}
int getRoot(int u){
    if(root[u] == 0) return u;
    return(root[u] = getRoot(root[u]));
}
int main()
{
    ios_base:: sync_with_stdio(0);
    cin.tie(nullptr);
    if(fopen(Task".inp","r")){
        freopen(Task".inp","r",stdin);
    }
    cin >> n >> m;
    for(int k = 1; k<=m; k++){
        cin >> a[++cnt].u >> a[cnt].v >> a[cnt].w;
        if ( m < n-1 ) cout << -1 << endl ; else {
            for ( int i = cnt; i ; i-- )
                if ( a[i].w < a[i-1].w ) swap(a[i],a[i-1]) ;
            fill(root+1,root+n+1,0);
            int ans = 0; cnt = 0;
            for(int i = 1; i<=n; i++){
                int p = getRoot(a[i].u);
                int q = getRoot(a[i].v);
                if(p != q){
                    root[p] = q;
                    ans += a[i].w;
                    cnt++;
                    a[cnt].u = a[i].u; a[cnt].v = a[i].v; a[cnt].w = a[i].w;
                }
            }
            if(cnt == n-1) cout << ans << endl; else cout << -1 << endl;
        }
    }
}

Leave a Comment