poj2485

来源:互联网 发布:海尔三网电视网络升级 编辑:程序博客网 时间:2024/05/29 18:52
/*
分析:
    最小生成树,最大边。


                           2012-07-30 11:32
*/








#include"stdio.h"#include"stdlib.h"int n;struct A{int a,b;int len;int flag;}E[250000];int K;int map[511][511];int set[511];int cmp(const void *a,const void *b){struct A *c,*d;c=(struct A *)a;d=(struct A *)b;return c->len-d->len;}void build(int num){int i;for(i=0;i<num;i++)set[i]=i;}int find(int k){if(set[k]==k)return k;set[k]=find(set[k]);return set[k];}void Union(int f1,int f2){set[f1]=f2;}int MAX(int a,int b){return a>b?a:b;}int Krustal(){int i;int ans;int f1,f2;for(i=0;i<K;i++)E[i].flag=0;for(i=0;i<K;i++){f1=find(E[i].a);f2=find(E[i].b);if(f1==f2)continue;Union(f1,f2);E[i].flag=1;}ans=0;for(i=0;i<K;i++)if(E[i].flag)ans=MAX(ans,E[i].len);return ans;}int main(){int T;int i,l;scanf("%d",&T);while(T--){scanf("%d",&n);build(n);for(i=0;i<n;i++)for(l=0;l<n;l++)scanf("%d",&map[i][l]);K=0;for(i=1;i<n;i++){for(l=i-1;l>=0;l--){E[K].a=i;E[K].b=l;E[K].len=map[i][l];K++;}}qsort(E,K,sizeof(E[0]),cmp);printf("%d\n",Krustal());}return 0;}


原创粉丝点击