九度 1017
来源:互联网 发布:数据库数据如何查找 编辑:程序博客网 时间:2024/06/06 08:33
最小生成树
#include<cstdio>#include<memory.h>#define MAX 110#define MAXEDGE 1000000typedef struct Graph_{ int arcs[MAX][MAX]; int vexnum; int arcnum;}Graph;typedef struct{ int adjvex; int lowcost;}EdgeType;Graph G;EdgeType closegde[MAX];int sum;void prim();int minlowcost();int main(){ int n; int a,b,cost; while(scanf("%d",&n) && n) { memset(G.arcs,0,sizeof(G.arcs)); G.arcnum=n*(n-1)/2; G.vexnum=n; for(int i=0;i<G.arcnum;i++) { scanf("%d%d%d",&a,&b,&cost); G.arcs[a][b]=G.arcs[b][a]=cost; } sum=0; prim(); printf("%d\n",sum); } return 0;}void prim(){ int k; for(int i=1;i<=G.vexnum;i++) { closegde[i].adjvex=1; closegde[i].lowcost=G.arcs[1][i]; } closegde[1].lowcost=0; /*for(int i=1;i<=G.vexnum;i++) printf("closedge:%d ",closegde[i].lowcost); printf("\n");*/ for(int i=1;i<G.vexnum;i++) { k=minlowcost(); //printf("%d %d\n",closegde[k].adjvex,k); sum+=closegde[k].lowcost; closegde[k].lowcost=0; for(int i=1;i<=G.vexnum;i++) { if(G.arcs[k][i]<closegde[i].lowcost) { closegde[i].lowcost=G.arcs[k][i]; closegde[i].adjvex=k; } } }}int minlowcost(){ int min_,i; min_=MAXEDGE; i=-1; for(int j=1;j<=G.vexnum;j++) { if(closegde[j].lowcost!=0 && min_>closegde[j].lowcost) { min_=closegde[j].lowcost; i=j; } } return i;}
0 0
- 九度oj 1017
- 九度 1017
- 九度OJ 1017
- 九度1017(Krustral)
- 【九度】题目1017:还是畅通工程
- 九度-1017-还是畅通工程
- 九度:题目1017:还是畅通工程
- 九度 题目1017:还是畅通工程
- 九度 题目1017:还是畅通工程
- 九度1017还是畅通工程
- 九度OJ-1017:还是畅通工程
- 最小生成树--九度1017[Kruskal]
- 九度1017:还是畅通工程
- 九度[1017]-还是畅通工程
- 九度 题目1017:还是畅通工程
- 【九度OJ】:九度OJ 1050
- 【九度OJ】:九度OJ 1053
- 【九度OJ】:九度OJ 1056
- ZOJ 3870 本篇文章转载自——白羊_baiyang
- 免费的论文查重网站
- Python使用traceback.print_exc()来代替print e 来输出详细的异常信息
- Expression is not assignable
- 计算四棱柱的表面积与体积
- 九度 1017
- Android系列之网络(二)----HTTP请求头与响应头
- Java基础知识精华
- Java多线程之synchronized和volatile的比较
- 卡尔曼滤波器的理解,C代码实现,和opencv里面KalmanFilter 的使用
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
- MySQL约束操作
- Win7x64系统过TP的一些尝试和目前遇到的问题
- 《编程之美: 求二叉树中节点的最大距离》