ZOJ2966最小生成树

来源:互联网 发布:祛痘图片淘宝 编辑:程序博客网 时间:2024/06/07 03:39
#include<iostream>#include<cstdio>#include<queue>#include<cstring>#define maxn 500#define maxm 500*500/2using namespace std;int T,n,m;struct edge{int u;int v;int k;bool operator<( const edge & e1 )const{return k>e1.k;}edge(int u,int v,int k){this->u=u;this->v=v;this->k=k;}edge(){u=v=k=0;}}E[maxm*2+100];priority_queue<edge>Q;int pa[maxn+10];void initpa(){for(int i=0;i<n;i++){pa[i]=i;}}int findset(int x){return x==pa[x]?x:pa[x]=findset(pa[x]);}int kraskul(){int ans=0;initpa();while(!Q.empty()){edge te=Q.top();Q.pop();int u=te.u,v=te.v,k=te.k;int x=findset(u);int y=findset(v);if(x!=y){ans+=k;pa[x]=y;}}return ans;}int main(){//freopen("in.txt","r",stdin);scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);for(int i=0;i<m;i++){int u,v,k;scanf("%d%d%d",&u,&v,&k);Q.push(edge(u,v,k));}cout<<kraskul()<<endl;}}

0 0
原创粉丝点击