[kuangbin带你飞]专题六 最小生成树 L HDU 1233

来源:互联网 发布:python post 请求截取 编辑:程序博客网 时间:2024/06/11 06:02

题目地址:https://vjudge.net/contest/66965#problem/L

思路:模板题。

AC代码:

#include<bits/stdc++.h>using namespace std;const int maxn=100+10;int fa[maxn];struct pos{    int x,y,z;}E[maxn*maxn];bool cmp(pos a,pos b){    return a.z<b.z;}int find(int p){    if(p!=fa[p])        fa[p]=find(fa[p]);    return fa[p];}int n;int main(){    while(scanf("%d",&n) && n)    {        int m=(n-1)*n/2;        for(int i=0;i<m;i++)        {            int a,b,c;            scanf("%d%d%d",&a,&b,&c);            E[i].x=a,E[i].y=b,E[i].z=c;        }        for(int i=0;i<=n;i++)            fa[i]=i;            sort(E,E+m,cmp);            int ans=0;        for(int i=0;i<m;i++)        {            int x=E[i].x;            int y=E[i].y;            int fx=find(x);            int fy=find(y);            if(fx!=fy)            {                fa[fx]=fy;                ans+=E[i].z;            }        }        printf("%d\n",ans);    }}


0 0
原创粉丝点击