最小生成树之Prim算法---POJ1258---Agri-Net

来源:互联网 发布:java获取一个月的天数 编辑:程序博客网 时间:2024/05/18 01:35

题目链接:http://poj.org/problem?id=1258

最小生成树的模板题/(ㄒoㄒ)/~~

#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N=110;int map[N][N];int vis[N];int low[N];int T;int pos;int prim(){    int min,res=0,j;    for(int i=1;i<T;i++)    {        min=1000000;        for( j=1;j<=T;j++)        {            if(vis[j]==0&&min>low[j])            {                min=low[j];                pos=j;            }        }        res+=min;        vis[pos]=1;        for(int q=1;q<=T;q++)        {            if(vis[q]==0&&low[q]>map[pos][q])            {                low[q]=map[pos][q];            }        }    }    return res;}int main(){    while(scanf("%d",&T)!=EOF)    {        memset(vis,0,sizeof(vis));        memset(low,0,sizeof(low));        for(int i=1;i<=T;i++)        {            for(int j=1;j<=T;j++)            {                scanf("%d",&map[i][j]);            }        }        for(int i=1;i<=T;i++)        {            low[i]=map[1][i];        }        pos=1;        vis[1]=1;        int ans=prim();        printf("%d\n",ans);    }    return 0;}

仅代表个人观点,欢迎交流探讨,勿喷~
这里写图片描述
PhotoBy:WLOP

http://weibo.com/wlop

0 0