poj 2485 Highway

来源:互联网 发布:广东干部网络教育培训 编辑:程序博客网 时间:2024/05/29 04:44

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

最小生成树 模板题

kruscal算法

代码:

#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#include <iostream>#include <algorithm>#include <map>#include <set>#include <queue>using namespace std;int p[505];struct node{    int v;    int u;    int d;}num[50005];bool operator <(node a,node b){    return a.d<b.d;}int find(int x){    return p[x]==x?x:find(p[x]);}int main(){    int T;    scanf("%d",&T);    while(T--)    {         int maxn=1;        int n;        int b;        scanf("%d",&n);        int len=0;        for(int i=1;i<=n;i++)        p[i]=i;        for(int i=1;i<=n;i++)        for(int j=1;j<=n;j++)        {                scanf("%d",&b);                num[len].v=i;                num[len].u=j;                num[len].d=b;                len++;        }        sort(num,num+len);        for(int i=0;i<len;i++)        {           // printf("%d %d %d\n",num[i].v,num[i].u,num[i].d);            int x=find(num[i].v),y=find(num[i].u);            if(x!=y)            {                maxn=max(maxn,num[i].d);                p[x]=y;            }        }        printf("%d\n",maxn);    }}




原创粉丝点击