poj 2485 (kruskal)

#include<cstdio>
#include<stdlib.h>
#define N 1000
struct node
{
    int x,y,w;
}p[N*N];
int f[N];
int cmp( const void *a ,const void *b)
{
return (*(node *)a).w > (*(node *)b).w ? 1 : -1;
}
int find(int x)
{
    if(x!=f[x])f[x]=find(f[x]);
    return f[x];
}
int main()
{
    int t,i,j,k,n,b;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        k=0;
        for(i=0;i<=n;i++)f[i]=i;
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                scanf("%d",&b);
                p[k].x=i;
                p[k].y=j;
                p[k].w=b;
                k++;
            }
        }
        qsort(p,k,sizeof(p[0]),cmp);
        int ans;
        for(i=0;i<k;i++)
        {
            int x=find(p[i].x);
            int y=find(p[i].y);
            if(x!=y)
            {
                f[x]=y;
                ans=p[i].w;

            }
        }
        printf("%d\n",ans);
    }
}

  

posted @ 2012-03-03 16:31  Szz  阅读(154)  评论(0编辑  收藏  举报