poj2421 kruskal

简介: http://poj.org/problem?id=2421 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> using namespace std; int n; struct ed

http://poj.org/problem?id=2421

#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
int n;
struct edge
{
    int a,b;
    int len;
} edges[10011];
int Num;
int map[111][111];
int parent[111];
int cmp(const void *a,const void *b)
{
    struct edge *c,*d;
    c=(struct edge *)a;
    d=(struct edge *)b;
    return c->len-d->len;
}
void build(int num)
{
    int i;
    for(i=1; i<=num; i++)
        parent[i]=i;
}
int find(int k)
{
    if(parent[k]==k)
        return k;
    parent[k]=find(parent[k]);
    return parent[k];
}
void Union(int f1,int f2)
{
    parent[f2]=f1;
}
int Kruskal()
{
    int i;
    int f1,f2;
    int ans;
    ans=0;
    qsort(edges,Num,sizeof(edges[0]),cmp);
    for(i=0; i<Num; i++)
    {
        f1=find(edges[i].a);
        f2=find(edges[i].b);
        if(f1==f2)
            continue;
        ans+=edges[i].len;
        Union(f1,f2);
    }
    return ans;
}
int main()
{
    int m,i,l,a,b,f1,f2,ans;
   //freopen("1.txt","r",stdin);
    while(scanf("%d",&n)!=-1)
    {
        build(n);
        for(i=1; i<=n; i++)
            for(l=1; l<=n; l++)
                scanf("%d",&map[i][l]);
        Num=0;
        for(i=2; i<=n; i++)
            for(l=1; l<i; l++)
            {
                edges[Num].a=i;
                edges[Num].b=l;
                edges[Num].len=map[i][l];
                Num++;
            }
        scanf("%d",&m);
        while(m--)
        {
            scanf("%d%d",&a,&b);
            f1=find(a);
            f2=find(b);
            if(f1==f2)
                continue;
            Union(f1,f2);
        }
        printf("%d\n",Kruskal());
    }
    return 0;
}

  

目录
相关文章
POJ 2487 Stamps
POJ 2487 Stamps
113 0
poj-1006-Biorhythms
Description 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。
625 0
poj-2551-ones
Description Given any integer 0
779 0
POJ 2487 Stamps
Description Background Everybody hates Raymond. He’s the largest stamp collector on planet earth and because of that he always makes fun of all the others at the stamp collector parties.
1071 0
|
存储 索引
|
算法 数据建模 机器学习/深度学习
poj1273Drainage Ditches
1 #include 2 /* 3 题意:就是寻找从源点到汇点的最大流! 4 要注意的是每两个点的流量可能有多个,也就是说有重边,所以要把两个点的所有的流量都加起来 5 就是这两个点之间的流量了! 6 ...
856 0
|
机器学习/深度学习

热门文章

最新文章