首页 > 代码库 > 【裸最小生成树】 模板 poj 1258

【裸最小生成树】 模板 poj 1258

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#define MAX 102void read();using namespace std;int map[MAX][MAX],best[MAX],n;bool visit[MAX];int main(){    //freopen("in.txt","r",stdin);    while(scanf("%d",&n)!=EOF)    {        memset(visit,false,sizeof(visit));        read();        int ans=0,k;        for(int i=1;i<=n;i++)        {            best[i]=map[1][i];        }        visit[1]=true;        while(1)        {            int min=1 << 30;            k=0;            for(int i=1;i<=n;i++)            {                if(!visit[i] && best[i]<min)                {                    min=best[i];                    k=i;                }            }            if(k==0)break;            ans+=min;            visit[k]=true;            for(int i=1;i<=n;i++)            {                if(!visit[i] &&map[k][i]<best[i])                {                    best[i]=map[k][i];                }            }        }         cout << ans << endl;    }    return 0;}void read(){    for(int i=1;i<=n;i++)    {        for(int j=1;j<=n;j++)        {            scanf("%d",&map[i][j]);//输入邻接矩阵        }    }}

 

【裸最小生成树】 模板 poj 1258