思路:按村莊間的距離從小到大排序,選擇構成最小生成樹
1.prim演算法
本題的資料村莊(即頂點的個數)不是很大,故可直接遍歷,若資料很大時,就需要用堆來維護每個頂點的當前最短距離
265 ms
1608 kb
#include#includeusing namespace std;
#define inf 1e9
const int maxn=105;
int mincost[maxn],cost[maxn][maxn];
bool used[maxn];
int n,t; ///t為頂點個數,n為邊的個數
struct cz
} s[5005];
int prim()
mincost[1]=0;
int ans=0;
while(true)
} s[5005];
int find(int x)
return ans;
}bool same(int x,int y)
void unite(int x,int y)
int main()
}printf("%d\n",ans);
}return 0;
還是暢通工程 最小生成樹
題目描述 某省調查鄉村交通狀況,得到的統計表中列出了任意兩村莊間的距離。省 暢通工程 的目標是使全省任何兩個村莊間都可以實現公路交通 但不一定有直接的公路相連,只要能間接通過公路可達即可 並要求鋪設的公路總長度為最小。請計算最小的公路總長度。輸入 測試輸入包含若干測試用例。每個測試用例的第1行給出村...
A 還是暢通工程(最小生成樹)
點選開啟鏈結 某省調查鄉村交通狀況,得到的統計表中列出了任意兩村莊間的距離。省 暢通工程 的目標是使全省任何兩個村莊間都可以實現公路交通 但不一定有直接的公路相連,只要能間接通過公路可達即可 並要求鋪設的公路總長度為最小。請計算最小的公路總長度。input測試輸入包含若干測試用例。每個測試用例的第1...
還是暢通工程 最小生成樹 Prim演算法
includeusing namespace std 測試輸入包含若干測試用例。每個測試用例的第1行給出村莊數目n 100 隨後的n n 1 2行對應村莊間的距離,每行給出一對正整數,分別是兩個村莊的編號,以及此兩村莊間的距離。為簡單起見,村莊從1到n編號。當n為0時,輸入結束,該用例不被處理。in...