hdu 1233 还是畅通工程 (MST,Prim)
2017-05-24 19:09
246 查看
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1233
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
#define MAXCOST 0x7fffffff
int graph[MAX][MAX];
int Prim(int gragh[][MAX],int n){
int lowcost[MAX];
int mst[MAX];
int i,j,min,minid,sum=0;
for(i=2;i<=n;i++){//lowcost初始化
lowcost[i]=graph[1][i];
mst[i]=1;
}
mst[1]=0;
for(i=2;i<=n;i++){
min=MAXCOST;
minid=0;
for(j=2;j<=n;j++){ //比较
if(lowcost[j]<min&&lowcost[j]!=0){
min=lowcost[j];
minid=j;
}
}
//printf("%c - %c : %d\n", mst[minid] + 'A' - 1, minid + 'A' - 1, min);
sum+=min;
lowcost[minid]=0;
for(j=2;j<=n;j++){ //找新起点,谁小换谁,相同不换
if(graph[minid][j]<lowcost[j]){
lowcost[j]=graph[minid][j];
mst[j]=minid;
}
}
}
return sum;
}
int main(){
int i,j,m,a,b,length,sum1;
while(scanf("%d",&m)!=EOF){
if(m==0)break;
sum1=0;
for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
graph[i][j]=MAXCOST;
for(i=1;i<=m*(m-1)/2;i++){
scanf("%d %d %d",&a,&b,&length);
if(length<graph[a][b]){
graph[a][b]=length;
graph[b][a]=length;
}
}
sum1=Prim(graph,m);
printf("%d\n",sum1);
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
#define MAXCOST 0x7fffffff
int graph[MAX][MAX];
int Prim(int gragh[][MAX],int n){
int lowcost[MAX];
int mst[MAX];
int i,j,min,minid,sum=0;
for(i=2;i<=n;i++){//lowcost初始化
lowcost[i]=graph[1][i];
mst[i]=1;
}
mst[1]=0;
for(i=2;i<=n;i++){
min=MAXCOST;
minid=0;
for(j=2;j<=n;j++){ //比较
if(lowcost[j]<min&&lowcost[j]!=0){
min=lowcost[j];
minid=j;
}
}
//printf("%c - %c : %d\n", mst[minid] + 'A' - 1, minid + 'A' - 1, min);
sum+=min;
lowcost[minid]=0;
for(j=2;j<=n;j++){ //找新起点,谁小换谁,相同不换
if(graph[minid][j]<lowcost[j]){
lowcost[j]=graph[minid][j];
mst[j]=minid;
}
}
}
return sum;
}
int main(){
int i,j,m,a,b,length,sum1;
while(scanf("%d",&m)!=EOF){
if(m==0)break;
sum1=0;
for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
graph[i][j]=MAXCOST;
for(i=1;i<=m*(m-1)/2;i++){
scanf("%d %d %d",&a,&b,&length);
if(length<graph[a][b]){
graph[a][b]=length;
graph[b][a]=length;
}
}
sum1=Prim(graph,m);
printf("%d\n",sum1);
}
return 0;
}
相关文章推荐
- hdu 1233:还是畅通工程(数据结构,图,最小生成树,普里姆(Prim)算法)
- HDU -- 1233 还是畅通工程(mst)
- hdu 1233 还是畅通工程(prim和kruskal最小生成树)
- hdu 1233 - 还是畅通工程(MST)
- hdu1233 还是畅通工程(prim 邻接矩阵 和 Kruskal)
- hdu-1233-还是畅通工程(普里姆(Prim)算法)
- 【裸MST:prim+邻接矩阵 / Kruskal+邻接表】hdu 1233 还是畅通工程
- hdu1233 还是畅通工程 prim
- HDU - 1233 还是畅通工程(Kruskal - MST)
- 杭电hdu 1233 还是畅通工程 prim
- HDU--1233:还是畅通工程 (并查集 & 最小生成树Prim)
- HDU 1233 还是畅通工程(MST裸题)
- hdu 1233 还是畅通工程(Prim最小生成树)
- hdu 1233 还是畅通工程 (最小生成树,prim,优先队列,kruskal并查集)
- [MST]HDU 1233还是畅通工程
- hdu 1233 还是畅通工程--最小生成树prim
- hdu 1233 还是畅通工程(prim||kruskal)
- HDU 1233 还是畅通工程 (最小生成树Prim)
- HDU 1233 还是畅通工程 最小生成树 Prim模板的应用
- HDU 1233 还是畅通工程---prim求最小生成树