一、生成树
洛谷模板最小生成树【跑的还算快的
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define N 5020 #define M 200008 using namespace std; int n,m,ans; int tot; int fa[N]; struct E{ int x,y,z; }e[M]; bool cmp(E a,E b){ return a.z<b.z; } int f(int x){ return fa[x]==x?x:fa[x]=f(fa[x]); } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++)scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].z); for(int i=1;i<=n;i++)fa[i]=i; sort(e+1,e+m+1,cmp); for(int i=1;i<=m;i++){ int x=e[i].x,y=e[i].y; int fx=f(x),fy=f(y); if(fx!=fy){ fa[fx]=fy; ans+=e[i].z; if(++tot==n-1)break; } } if(tot!=n-1)cout<<"orz\n"; else printf("%d\n",ans); return 0; }