POJ2485

来源:互联网 发布:数据透视表 总计 编辑:程序博客网 时间:2024/05/16 09:31

题中需要连接所给出的各个点,并且使得所连边中最长的边最短。


用PRIM算法不断标记黑点即可保证所连的边中最长的边最短。

#include<cstdio>#include<string.h>#define MAXN 505#define INF 70000using namespace std;bool visited[MAXN];int dist[MAXN][MAXN];int main(){    int i,j,k,temp,u,cnt,num,m;    scanf("%d",&cnt);    while(cnt--)    {        scanf("%d",&num);        for(i=0;i<num;i++)        {            for(j=0;j<num;j++)            {                scanf("%d",&dist[i][j]);            }        }        memset(visited,0,sizeof(visited));        visited[0]=true;        m=0;        for(k=0;k<num-1;k++)        {            temp=INF;            for(i=0;i<num;i++)            {                if(visited[i]==true)                {                   for(j=0;j<num;j++)                   {                      if(j==i) continue;                      if(dist[i][j]<temp&&visited[j]==false) {temp=dist[i][j];u=j;}                   }                }            }            visited[u]=true;            if(temp>m) m=temp;        }        printf("%d\n",m);    }    return 0;}


0 0
原创粉丝点击