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);

    }

}

  

你可能感兴趣的:(poj)