您的位置:首页 > 其它

HDU 1233 还是畅通工程(最小生成树)

2017-05-13 10:46 260 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1233

还是最小生成树  prim算法

AC代码:

#include <stdio.h>
#define maxinf 0x3f3f3f3f
int map[110][110];
int vis[110];
int dis[110];
int N;
void prim(){
int v;
for (int i=1;i<=N;i++){
dis[i]=map[1][i];
vis[i]=0;
}
dis[1]=0;
vis[1]=1;
for (int i=1;i<=N;i++){
int min=maxinf;
for (int j=1;j<=N;j++){
if (!vis[j]&&dis[j]<min){
min=dis[j];
v=j;
}
}
vis[v]=1;
for (int j=1;j<=N;j++){
if (!vis[j]&&map[v][j]<dis[j]){
dis[j]=map[v][j];
}
}
}
}

int main(){
int a,b,c;
while (scanf ("%d",&N)&&N){
for (int i=1;i<=N;i++){
for (int j=1;j<=N;j++){
if (i!=j)
map[i][j]=maxinf;
else
map[i][j]=0;
}
}

for (int i=1;i<=N*(N-1)/2;i++){
scanf ("%d%d%d",&a,&b,&c);
map[a][b]=c;
map[b][a]=c;
}
prim();
int sum=0;
for (int i=1;i<=N;i++)
sum+=dis[i];
printf ("%d\n",sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  最小生成树