【ybtoj】新的開始
阿新 • • 發佈:2021-08-08
【ybtoj】新的開始
題目描述
輸入格式
輸出格式
輸出僅一個整數,表示讓所有礦井獲得充足電能的最小花費。
樣例輸入
4
5
4
4
3
0 2 2 2
2 0 3 3
2 3 0 4
2 3 4 0
樣例輸出
9
樣例解釋
小F可以選擇在4號礦井建立發電站然後把所有礦井都與其建立電網,總花費是3+2+2+2=9。
解題思路
經典的prim求最小生成樹
Code
#include<iostream> #include<algorithm> using namespace std; int n,m,tot,x,maxn=99999999,minn=99999999,s,e,c[2001],k; bool b[2001]; int f[2001][2001]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>f[0][i]; f[i][0]=f[0][i]; } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>f[i][j]; for(int i=1;i<=n;i++) f[i][i]=maxn; tot=0; b[0]=true; c[0]=0; for(int i=1;i<=n;i++) c[i]=f[0][i]; for(int i=1;i<=n;i++) { minn=maxn; k=0; for(int j=1;j<=n;j++) if((!b[j])&&(c[j]<minn)) { minn=c[j]; k=j; } tot+=c[k]; b[k]=true; for(int j=1;j<=n;j++) if(f[k][j]<c[j]) c[j]=f[k][j]; } cout<<tot; return 0; }
謝謝閱讀
本文來自部落格園,作者:基德不基,轉載請註明原文連結:https://www.cnblogs.com/ssllyw/p/15115966.html