hdoj 1863

来源:互联网 发布:json数组增加元素 编辑:程序博客网 时间:2024/06/07 05:06

2017-12-10

很简单的一道最小生成树算法题,直接运用prime算法求解即可,代码还有需要优化的地方.
#include<iostream>#include<cstring>#define INF 0x3f3f3f3fusing namespace std;const int N = 100;int dis[N+1][N+1];bool f[N+1];int m,n;int prime(){    int s=0;    f[1]=true;    for (int i=1;i<m;i++){        int min=0x3f3f3f3f,pos=1;        for (int j=1;j<=m;j++){            if (f[j]){                for (int k=1;k<=m;k++){                    if (!f[k]&&j!=k){                        if (dis[j][k]<min){                            min=dis[j][k];                            pos=k;                        }                    }                }            }        }        f[pos]=true;        s+=min;    }    return s;}int main(){    while (cin>>n>>m){        memset(dis,0x3f,sizeof(dis));        memset(f,false,sizeof(f));        if (n==0) break;        for (int i=0;i<n;i++){            int a,b,d;            cin>>a>>b>>d;            dis[a][b]=d;            dis[b][a]=d;        }        int i,res=prime();        for (i=1;i<=m;i++){            if (!f[i]){                break;            }        }        if (i<=m) cout<<"?"<<endl;        else cout<<res<<endl;    }    return 0;}
原创粉丝点击