Untitled
// 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