数据结构实验之图论九:最小生成树
来源:互联网 发布:有线网络 编辑:程序博客网 时间:2024/05/21 00:47
数据结构实验之图论九:最小生成树Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。 Input 输入包含多组数据,格式如下。第一行包括两个整数n m,代表城市个数和可以修建的公路个数。(n <= 100, m <=10000)剩下m行每行3个正整数a b c,代表城市a 和城市b之间可以修建一条公路,代价为c。 Output 每组输出占一行,仅输出最小花费。Example Input3 21 2 11 3 11 0Example Output20HintAuthor 赵利强
#include<stdio.h>#include<string.h>#include<stdlib.h>#define inf 0x3f3f3f3fint a[1010][1010], b[1010];int c[1010];int sum, n, m, flag;void prime();int main(){ int u, v, i, cost, j; while(~scanf("%d %d", &n, &m)) { memset(a, inf, sizeof(a)); memset(b, 0, sizeof(b)); for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { if(i == j) a[i][j] = 0; } } flag = 0; sum = 0; for(i = 1; i <= m; i++) { scanf("%d %d %d", &u, &v, &cost); if(cost < a[u][v]) { a[u][v] = a[v][u] = cost; } } prime(); if( m < n-1) printf("0\n"); if(!flag) printf("%d\n", sum); } return 0;}void prime(){ int k, t, i, j; b[1] = 1; for(j = 1; j <= n; j++) { c[j] = a[j][1]; } for(i = 2; i <= n; i++) { t = inf; for( j = 1; j <= n; j++) { if(!b[j]&&c[j] < t) { t = c[j]; k = j; } } if(t == inf) { flag = 1; break; } b[k] = 1; sum +=t; for(j = 1; j <= n; j++) { if(!b[j] && c[j] > a[j][k]) c[j] = a[j][k]; } }}
阅读全文
0 0
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 2144 数据结构实验之图论九:最小生成树
- 2144-数据结构实验之图论九:最小生成树
- 九宫格显示控件
- hive相关问题总结
- 解决Altium画pcb时出现Unknown Pin的情况
- angularJS指令ng-repeat生成的dom元素js获取不到
- 数据结构实验之图论六:村村通公路
- 数据结构实验之图论九:最小生成树
- jquery点击事件
- 关于Java和OC深浅复制的问题
- jar包(依赖)
- 大学毕业论文指导-内容陈述
- 如何在 Linux 系统中通过用户组来管理用户
- 配置服务器双击环境下的数据库Oracle11gR2
- spring装配bean
- ros中cmake编译问题及cmakelist书写问题