POJ 1258

来源:互联网 发布:linux集群ddos 编辑:程序博客网 时间:2024/09/21 09:04

题意为求将所有点连接起来所需的最短路径,prim求最小生成树即可。


#include<cstdio>#include<string.h>#define INF 100001#define MAXN 105int dist[MAXN][MAXN];bool visited[MAXN];int main(){    int i,j,k,num,temp,u,total;    while(scanf("%d",&num)!=EOF)    {        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;        total=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(i==j) continue;                        if(visited[j]==false&&dist[i][j]<temp) {temp=dist[i][j];u=j;}                    }                }            }            visited[u]=true;            total+=temp;        }        printf("%d\n",total);    }    return 0;}


0 0