本文共 1309 字,大约阅读时间需要 4 分钟。
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<bitset>#include<cassert>#include<cctype>#include<cmath>#include<cstdlib>#include<ctime>#include<deque>#include<iomanip>#include<list>#include<map>#include<queue>#include<set>#include<stack>#include<vector>#include<unordered_set>#include<unordered_map>using namespace std;//extern "C"{void *__dso_handle=0;}typedef long long ll;typedef long double ld;#define fi first#define se second#define pb push_back#define mp make_pair#define pii pair<int,int>#define lowbit(x) x&-xconst double PI=acos(-1.0);const double eps=1e-6;const ll mod=1e9+7;const int inf=0x3f3f3f3f;const int maxn=1e5+10;const int maxm=100+10;#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int r[maxn],f[maxn],n,m;int u[maxn],v[maxn],d[maxn];int find(int x) { return f[x]==x?x:find(f[x]);}int cmp(int i,int j) { return d[i]<d[j]; }int kruskal(){ int ans=0; for(int i=0;i<n;i++) f[i]=i; for(int i=0;i<m;i++) r[i]=i; sort(r,r+m,cmp); for(int i=0;i<m;i++) { int x=find(u[r[i]]); int y=find(v[r[i]]); if(x!=y) { ans+=d[r[i]]; f[x]=y; } } return ans;}int main(){ scanf("%d%d",&n,&m); for(int i=0;i<m;i++) scanf("%d%d%d",&u[i],&v[i],&d[i]); printf("%d\n",kruskal());}//5 6//1 2 1//1 3 2//1 4 3//2 5 4//3 5 5//4 5 6//10
转载地址:http://jqmh.baihongyu.com/