博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj-1287 Networking(Prim)
阅读量:5325 次
发布时间:2019-06-14

本文共 1852 字,大约阅读时间需要 6 分钟。

题目链接:

题目描述:

请先参考关于prim算法求最小生成树的讲解博客:

代码实现:

1 #include
2 #include
3 using namespace std; 4 #define MAX 100 5 #define MAXCOST 0x7fffffff 6 7 int graph[MAX][MAX]; 8 9 int prim(int graph[][MAX], int n)10 {11 int lowcost[MAX];//lowcost[i]:表示以i为终点的边的最小权值,注意i的起点并不确定12 int mst[MAX];//mst[i]:表示对应lowcost[i]的起点13 int i, j, min, minid, sum = 0;14 //我们设V1是起点,进行初始化15 for (i = 2; i <= n; i++)16 {17 lowcost[i] = graph[1][i];//如果该顶点未与V1相连,lowcost值为MAXCOST18 mst[i] = 1;//刚开始的时候,对于每一个Vi来说,它的起点都是V119 }20 mst[1] = 0;//当mst[i]=0表示起点i加入MST21 for (i = 2; i <= n; i++)//执行n-1次,保证V1到达每个顶点的最短边都能够找到22 {23 min = MAXCOST;24 minid = 0;//起点Vi到顶点minid的边最短25 for (j = 2; j <= n; j++)//找出最短的边,用minid记录下该顶点,用min存下最短边26 {27 if (lowcost[j] < min && lowcost[j] != 0)28 {29 min = lowcost[j];30 minid = j;31 }32 }33 sum += min;//每找出一条最短边就加到权值中去34 lowcost[minid] = 0;//当lowcost[i]=0说明以i为终点的边的最小权值=0,也就是表示i点加入了MST35 for (j = 2; j <= n; j++)36 {37 if (graph[minid][j] < lowcost[j])38 {39 lowcost[j] = graph[minid][j];40 mst[j] = minid;41 }42 }43 }44 return sum;45 }46 47 int main()48 {49 int i, j, k, m, n;50 int x, y, cost;51 while(scanf("%d%d",&m,&n)){52 if(m==0)53 break;54 //初始化图G55 for (i = 1; i <= m; i++)56 {57 for (j = 1; j <= m; j++)58 {59 graph[i][j] = MAXCOST;60 }61 }62 //构建图G63 for (k = 1; k <= n; k++)64 {65 cin >> i >> j >> cost;66 if(cost

转载于:https://www.cnblogs.com/LJHAHA/p/10335616.html

你可能感兴趣的文章
phpstudy apache无法启动
查看>>
判断对象是否存在 (if exists (select * from sysobjec...
查看>>
SVN检出后文件没有图标显示
查看>>
MPICH2在两台Ubuntu上安装
查看>>
jmete 取配置文件的行数(二)
查看>>
smortform 创建
查看>>
ng-class中的if else判断
查看>>
伪静态与重定向--RewriteBase
查看>>
“”.length()与“”.split(",").length
查看>>
如何让搜索引擎搜到自己的博客文章
查看>>
同步对象、信号量
查看>>
table标签
查看>>
hash
查看>>
Java内部类
查看>>
The Castle
查看>>
oracle 添加外键,报“未找到父项关键字”
查看>>
pymongo使用方法
查看>>
负数的左右移位
查看>>
在Ubuntu 14.04 64bit上安装百度云Linux客户端BCloud
查看>>
HDU-3836-Equivalent Sets(连通分量缩点)
查看>>