有n個城市,其中有些城市之間可以修建公路,修建不同的公路費用是不同的。現在我們想知道,最少花多少錢修公路可以將所有的城市連在一起,使在任意一城市出發,可以到達其他任意的城市。
輸入包含多組資料,格式如下。
第一行包括兩個整數n m,代表城市個數和可以修建的公路個數。(n<=100)
剩下m行每行3個正整數a b c,代表城市a 和城市b之間可以修建一條公路,代價為c。
每組輸出佔一行,僅輸出最小花費。
3 21 2 1
1 3 1
1 0
20
**如下:
//prim演算法
#include
#include"cstdio"
#include"cstring"
#include"cstdlib"
using namespace std;
int map[120][120];
int dis[120];
int vis[120];
int n,m;
int sum;
const int inf=999999;
void prim(int n)
vis[1]=1;
sum=0;
for(int i=1;i=inf)break;
sum+=min;
vis[pos]=1;
for(int j=1;j<=n;j++)
prim(n);
printf("%d\n",sum);
}return 0;
//kruskal演算法
#include
#include
#include
#include
#include
using namespace std;
int bin[110];
int sum;
int num;
int n,m;
struct node
q[100000];
int finds(int a)
void sort(node *s)
node t=s[i];s[i]=s[k];s[k]=t;}}
int main()
sort(q);
for(i=0;iif(num==n-1)
}printf("%d\n",sum);
}return 0;
}
最小生成樹(修路)
題意 flatopia島要修路,這個島上有n個城市,要求修完路後,各城市之間可以相互到達,且修的總 路程最短.求所修路中的最長的路段 sample input 1 30 990 692 990 0 179 692 179 0 sample output 692 include define max ...
修路方案 最小生成樹變形 次小生成樹
時間限制 3000 ms 記憶體限制 65535 kb 難度 5 描述 南將軍率領著許多部隊,它們分別駐紮在n個不同的城市裡,這些城市分別編號1 n,由於交通不太便利,南將軍準備修路。現在已經知道哪些城市之間可以修路,如果修路,花費是多少。現在,軍師小工已經找到了一種修路的方案,能夠使各個城市都聯通...
修路方案(次小生成樹)
時間限制 3000 ms 記憶體限制 65535 kb 難度 5 描述 南將軍率領著許多部隊,它們分別駐紮在n個不同的城市裡,這些城市分別編號1 n,由於交通不太便利,南將軍準備修路。現在已經知道哪些城市之間可以修路,如果修路,花費是多少。現在,軍師小工已經找到了一種修路的方案,能夠使各個城市都聯通...