首先要判斷能否構成生成樹,剛開始的思路是用hash遍歷城市,看是否所有的城市都記錄進取,被測試資料誤導,如果給這組資料(1,2)(3,4)這麼沒辦法構成單樹。
#include#includeconst
int inf=0x7fffffff
;const
int maxn=110
;int
hash[maxn];
intpre[maxn];
intmap[maxn][maxn];
intdist[maxn];
intn,m,ans,flag;
void
prim()
dist[
1]=0
; p[
1]=true
;
for(i=1; i<=n-1; i++)
}if(k==0
)//判斷是否有最小生成樹
p[k]=true
; ans+=dist[k];
for(j=1; j<=n; j++)}}
}int
main()
for(i=1; i<=m; i++)
//for(i=1; i<=n; i++)
//if(hash[i]!=1) break;
ans=flag=0
; prim();
if(flag) printf("
?\n"
);
else printf("
%d\n
",ans);
}return0;
}
還是暢通工程 最小生成樹
題目描述 某省調查鄉村交通狀況,得到的統計表中列出了任意兩村莊間的距離。省 暢通工程 的目標是使全省任何兩個村莊間都可以實現公路交通 但不一定有直接的公路相連,只要能間接通過公路可達即可 並要求鋪設的公路總長度為最小。請計算最小的公路總長度。輸入 測試輸入包含若干測試用例。每個測試用例的第1行給出村...
A 還是暢通工程(最小生成樹)
點選開啟鏈結 某省調查鄉村交通狀況,得到的統計表中列出了任意兩村莊間的距離。省 暢通工程 的目標是使全省任何兩個村莊間都可以實現公路交通 但不一定有直接的公路相連,只要能間接通過公路可達即可 並要求鋪設的公路總長度為最小。請計算最小的公路總長度。input測試輸入包含若干測試用例。每個測試用例的第1...
暢通工程 最小生成樹prim
題目 暢通工程 time limit 1000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 36652 accepted submission s 16298 problem descript...