7-3 公路村村通 (30 分)
生活随笔
收集整理的這篇文章主要介紹了
7-3 公路村村通 (30 分)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
現(xiàn)有村落間道路的統(tǒng)計(jì)數(shù)據(jù)表中,列出了有可能建設(shè)成標(biāo)準(zhǔn)公路的若干條道路的成本,求使每個(gè)村落都有公路連通所需要的最低成本。
輸入格式:
輸入數(shù)據(jù)包括城鎮(zhèn)數(shù)目正整數(shù)N(≤1000)和候選道路數(shù)目M(≤3N);隨后的M行對應(yīng)M條道路,每行給出3個(gè)正整數(shù),分別是該條道路直接連通的兩個(gè)城鎮(zhèn)的編號(hào)以及該道路改建的預(yù)算成本。為簡單起見,城鎮(zhèn)從1到N編號(hào)。
輸出格式:
輸出村村通需要的最低成本。如果輸入數(shù)據(jù)不足以保證暢通,則輸出?1,表示需要建設(shè)更多公路。
Prim算法
#include<stdio.h> #include<string.h>int G[10000][10000]; int main(void) {int n,m,a,b,c,s=0,p,i,t=0,j,min,flag=0,cost[10000],k,sum=0;scanf ("%d %d",&n,&m);if (m<n-1){printf ("-1");return 0;} for (i=1;i<=n;i++) {for (j=1;j<=n;j++) {G[i][j]=999999;}}for (i=0;i<m;i++) {scanf ("%d %d %d",&a,&b,&c);G[a][b]=G[b][a]=c;}for (i=1;i<=n;i++) {cost[i]=G[1][i];}cost[1]=0;for (t=1;t<n;t++) {min=999999;k=0;for (i=1;i<=n;i++) {if (cost[i]!=0&&cost[i]<min) {min=cost[i];k=i;}}if (k!=0) {//printf ("%d* ",k);sum=sum+cost[k];cost[k]=0;for (j=1;j<=n;j++) {if (G[k][j]<cost[j]) {cost[j]=G[k][j];}}}}for (i=1;i<=n;i++) {if (cost[i]!=0) {flag=1;break;}}if (flag==1) printf ("-1");else printf ("%d",sum);return 0; }kruskal算法
#include<bits/stdc++.h> using namespace std; struct Node{int a,b,c; }Tel[1000];int Pre[100]; int Find(int x); void lianjie(int a,int b);int cmp(struct Node x,struct Node y);int main(void){int n,m,i,s=0,t=0;scanf ("%d %d",&n,&m);for (i=0;i<n;i++) {Pre[i]=i;}for (i=0;i<m;i++) {scanf ("%d %d %d",&Tel[i].a,&Tel[i].b,&Tel[i].c);}sort(Tel,Tel+m,cmp);for (i=0;i<m&&t<=n-1;i++) {if (Find(Tel[i].a)!=Find(Tel[i].b)) {lianjie(Tel[i].a,Tel[i].b);s=s+Tel[i].c;t++;}//if (t==n-1) break;}if (t<n-1) printf ("-1\n");else printf ("%d",s);return 0; } int cmp(struct Node x,struct Node y) {return x.c<y.c; } int Find(int x) {/*if (Pre[x]==x) return x;else return Find(Pre[x]);*/while(1) {if (x==Pre[x]) return x;x=Pre[x];} } void lianjie(int a,int b) {int x,y;x=Find(a);y=Find(b);if (x!=y) {Pre[y]=x;} }總結(jié)
以上是生活随笔為你收集整理的7-3 公路村村通 (30 分)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Allegro 中手动制作螺丝孔封装
- 下一篇: “德宏古茶”平台 开创互联网+茶叶新模式