公路村村通 (30分)
現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。
輸入資料報括城鎮數目正整數n
n(\le 1000≤1
000)和候選道路數目m
m(\le 3n≤3
n);隨後的m
m行對應m
m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及該道路改建的預算成本。為簡單起見,城鎮從1到n
n編號。
輸出村村通需要的最低成本。如果輸入資料不足以保證暢通,則輸出-1−1
,表示需要建設更多公路。
6 15
1 2 5
1 3 3
1 4 7
1 5 4
1 6 2
2 3 4
2 4 6
2 5 2
2 6 6
3 4 6
3 5 1
3 6 1
4 5 10
4 6 8
5 6 3
12
#includeusing namespace std;
#define inf 0xffffff
int map[1005][1005],dis[1005],pre[1005];
//map存兩點距離,dis存未收入點到收入點距離,pre存該點的父結點
int i,j,n,m,x,y,z,l;
void prim()
dis[1]=0;
pre[1]=0;
int sum=0,flag,minn;
for(i=2;i<=n;i++)
} if(sum>inf||sum<0) printf("-1\n"); //如果存在不連通的點,sum>inf ||sum<0(加法越界)
else printf("%d\n",sum);
}
int main()
prim();
return 0;
}
PTA 公路村村通 最小生成樹
現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入資料報括城鎮數目正整數n n le 1000 1 000 和候選道路數目m m le 3n 3 n 隨後的m m行對應m m條道路,每行給出3個正整數,分別是該條道路直接連通的兩...
公路村村通(30 分)
這個題目就是最小生成樹,很簡單的乙個題目,就是需要判斷每個結點是否都在樹上,然後判斷一下就可以,板子題目 現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入資料報括城鎮數目正整數 n 和候選道路數目 m 隨後的 m行對應 m條道...
最小生成樹 案例6 1 7 公路村村通
題目鏈結 思路 最小生成樹問題,我們直接利用kruskal演算法。即將所有邊按照權重從小到大排列,每次挑選其中權重最小的邊生成樹,並且每次挑選時要篩去選擇該邊會形成迴路的邊,利用並查集即可,若在並查集中兩點同根,即兩點連通,則選擇連線兩點的邊會形成迴路.include include include...