poj 1258 Agri-Net

来源:互联网 发布:新思路二级vb序列号 编辑:程序博客网 时间:2024/06/06 05:01

        最小生成树的题,直接用prime就可以解决,模板题吧。


    

#include<cstdio>#include<cstring>#include<iostream>#define INF 0x3f3f3f3fusing namespace std;const int N = 105;int map[N][N], n, ans, dis[N];bool vis[N];void pri(){    vis[1] = true;    for(int i=2; i<=n; ++i)        dis[i] = map[i][1];    int count = n-1;    ans = 0;    while(count--)    {        int mi = INF,k;        for(int i = 2; i <= n; ++ i)        if(!vis[i]&&mi>dis[i])        {            mi = dis[i];            k = i;        }        vis[k] = true;        ans += dis[k];        for(int i=2; i<=n; ++i)            if(!vis[i]&&map[i][k]<dis[i])            dis[i] = map[i][k];    }}int main(void){    while(scanf("%d",&n)!=EOF)    {        for(int i=1; i<=n; ++i)            for(int j=1; j<=n; ++j)               scanf("%d", &map[i][j]);         memset(vis,false,sizeof(vis));         pri();         cout<<ans<<endl;    }    return 0;}


原创粉丝点击