zoukankan      html  css  js  c++  java
  • poj 1258 kruscal

    //hnldyhy(303882171) 8:54:04

    #include <iostream> // poj 1258
    #include <algorithm>
    using namespace std;
    #define N 105
    int p[N];
    void init (int n)
    { for (int i=1;i<=n;i++) p[i]=i; }
    int find(int x)
    {
    if (p[x]==x)return x;
    else return p[x]=find(p[x]);
    }
    void merge(int x,int y)
    {
    int a=find(x),b=find(y);
    if (a!=b) p[a]=b;
    }
    int a[N][N],t,ans,n;
    struct edge
    { int x1,x2,d; } e[N*(N-1)/2]; // N个顶点 N(N-1)/2 边的条数
    int cmp(const void *a,const void *b)
    {
    struct edge *aa=(struct edge *)a,
    *bb=(struct edge *)b ;
    return (*aa).d-(*bb).d;
    }
    void kruscal()
    { int u,v,i,c=0;
    init (n); ans=0;
    for (i=0;i<t;i++)
    { u=e[i].x1; v=e[i].x2;
    if (find(u)!=find(v)) //不在同一个集合
    { ans=ans+e[i].d; merge(u,v); c++;}
    if (c==n-1) return ;
    }
    }
    int main()
    { int i,j;
    while (cin>>n&&n>=3)
    { for (i=1;i<=n;i++)
    for (j=1;j<=n;j++)
    cin>>a[i][j]; t=0;
    for (i=2;i<=n;i++)
    for (j=1;j<i;j++)
    { e[t].x1=i; e[t].x2=j;
    e[t].d=a[i][j]; t++; }
    qsort(e,t,sizeof(e[0]),cmp);
    kruscal();
    cout<<ans<<endl;
    }
    return 0;
    }

  • 相关阅读:
    头脑王者 艺术,电影,体育,时尚,动漫
    头脑王者 音乐
    头脑王者 地理
    头脑王者 历史,军事
    头脑王者 文学
    Jenkins project
    sql server drop login failed
    devenv.exe 编译Solution
    Jenkins
    头脑王者
  • 原文地址:https://www.cnblogs.com/2014acm/p/3905519.html
Copyright © 2011-2022 走看看