hdoj 1863
2017-12-10
很簡單的一道最小生成樹算法題,直接運用prime算法求解即可,代碼還有需要優化的地方. #include<iostream> #include<cstring> #define INF 0x3f3f3f3f using 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; }總結
- 上一篇: 获取jar包内部的资源文件
- 下一篇: Metail Design入门(一)