poj-1258 Agri-Net

来源:互联网 发布:营销软件破解论坛 编辑:程序博客网 时间:2024/06/09 20:03

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

简单题

#include <iostream>#include <stdio.h>#include <math.h>#include <algorithm>#include <string.h>#define INF 10099990using namespace std;int map[110][110],dis[110],v[110];long long  prim(int n){    int k;    long long min,sum=0;    memset(v,0,sizeof(v));    memset(dis,0,sizeof(dis));    for(int i=1;i<=n;i++)        dis[i]=map[1][i];    v[1]=1;    dis[1]=0;    for(int i=2;i<=n;i++)    {        k=-1;        min = INF;        for(int j=1;j<=n;j++)            if(!v[j]&&min>dis[j])            {                k=j;                min=dis[j];            }        sum += min;        v[k]=1;        for(int j=1;j<=n;j++)            if(!v[j] && dis[j]>map[k][j])                dis[j]=map[k][j];    }    return sum;}int main(){    int n,m;    while(scanf("%d",&n)!=EOF)    {        for(int i=1;i<=n;i++)            for(int j=1;j<=n;j++)            {                if (i != j)                    map[i][j] = INF;                else                    map[i][j] = 0;            }        for(int i=1;i<=n;i++)            for(int j=1;j<=n;j++)            {                scanf("%d",&m);                if (map[i][j] >= m)                {                    map[i][j] = m;                    map[j][i] = m;                }            }        printf("%lld\n",prim(n));    }    return 0;}


0 0
原创粉丝点击