poj 1287 Networking(图论:最小生成树)
来源:互联网 发布:python软件哪里下载 编辑:程序博客网 时间:2024/06/07 01:01
因为题目中说了任两个节点之间可能会有多条边的存在
所以读入边的过程中要存取最小边
这样的话用prim写会方便些,因为Kruskal读边的过程是依次读入,很难更新
而prim是存在矩阵中,更新很简单,只需要把该矩阵所有元素都初始化为最大值即可
代码如下:
#include <cstdio>#include <iostream>#include <algorithm>#define MAXN 10010#define LL long long#define INF 0x7fffffffusing namespace std;int n, m, g[MAXN][MAXN], dis[MAXN];int prim() { int now, minedge, minnode; int i, j, ans; for(i=1; i<=n; ++i) dis[i] = INF; now = 1; ans = 0; for(i=0; i<n-1; ++i) { dis[now] = -1; minedge = INF; for(j=1; j<=n; ++j) { if(now!=j && dis[j]>=0) { dis[j] = min(dis[j], g[now][j]); if(dis[j] < minedge) { minedge = dis[j]; minnode = j; } } } now = minnode; ans += minedge; } return ans;}int main(void) { int i, j, x, y, len; while(cin >> n && n) { cin >> m; for(i=1; i<=n; ++i) for(j=i; j<=n; ++j) g[i][j] = g[j][i] = MAXN; while(m--) { cin >> x >> y >> len; g[x][y] = g[y][x] = min(g[x][y], len); } cout << prim() << endl; }}
0 0
- poj 1287 Networking(图论:最小生成树)
- POJ 1287 最小生成树 Networking
- poj 1287 Networking 最小生成树
- POJ 1287 Networking(最小生成树)
- poj-1287 Networking 最小生成树
- POJ 1287 Networking(最小生成树)
- POJ 1287 Networking(最小生成树)
- poj 1287 Networking(最小生成树)
- poj 1287 Networking ->最小生成树
- Poj 1287 Networking【最小生成树】
- POJ - 1287 Networking(最小生成树)
- poj 1287 Networking(最小生成树)
- POJ 1287 Networking(最小生成树)
- poj 1287 Networking (最小生成树)
- POJ 1287 Networking(最小生成树)
- 【POJ】-1287-Networking(最小生成树)
- poj-1287-Networking【最小生成树】
- POJ 1287 Networking (最小生成树)
- html中<li>右对齐的方法
- Linux /etc/issue文件和/etc/motd文件
- matplotlib-绘制精美的图表
- Android中加载大型图片
- JBPM具体应用之decision节点的使用
- poj 1287 Networking(图论:最小生成树)
- 抽象类(abstract)
- 欧美女性掀起晒体毛活动
- UVA 1590 - IP Networks
- servlet/filter/listener/interceptor区别与联系
- 4Fang打印控件直接指定打印机打印网页
- UISearchBar 如何隐藏按钮
- Winform TextBox中只能输入数字的几种常用方法(C#)
- Writing and Compiling A Simple Program For OpenWrt