POJ1258 Agri-Net 最小生成树 C语言
2011-07-20 16:25
489 查看
题目:http://poj.org/problem?id=1258
题目大意:多组测试用例,找出连接所有农场的最短路径。
算法:最小生成树 + 并查集。
提交情况:1次WA,1次RE,1次AC。
总结:没注意到多组用例;边集一定要开够。
思路:建立无向图,用上三角矩阵表示,并查集 + Kruskal建最小生成树,记录总长度。
AC code:
View Code
题目大意:多组测试用例,找出连接所有农场的最短路径。
算法:最小生成树 + 并查集。
提交情况:1次WA,1次RE,1次AC。
总结:没注意到多组用例;边集一定要开够。
思路:建立无向图,用上三角矩阵表示,并查集 + Kruskal建最小生成树,记录总长度。
AC code:
View Code
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <algorithm> using namespace std; #define MAX (100 + 10) #define MAXN (100000 + 100) typedef struct Graph { int u, v, len; } graph; graph edge[MAXN]; int father[MAX]; int cnt = 0; void Clear() { memset(edge, 0, sizeof(edge)); memset(father, 0, sizeof(father)); } int cmp(graph &a, graph &b) { return a.len < b.len; } void Build_Map(int n) { int i, j, k = 1; int len; for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { scanf("%d", &len); if (len && j > i) { edge[k].u = i; edge[k].v = j; edge[k++].len = len; cnt++; } } father[i] = i; } } int Find(int u) { if(u != father[u]) father[u] = Find(father[u]); return father[u]; } void Union(int u, int v) { father[u] = v; } int MLT() { int road = 0; int fu, fv; int i, j; for(i = 1; i <= cnt; i++) { fu = Find(edge[i].u); fv = Find(edge[i].v); if (fu != fv) { road += edge[i].len; Union(fu, fv); } } return road; } int main() { int n; while(~scanf("%d", &n)) { Clear(); Build_Map(n); sort(edge + 1, edge + cnt + 1,cmp); printf("%d\n", MLT()); } return 0; }
相关文章推荐
- POJ 题目1258 Agri-Net(最小生成树)
- POJ 1258 Agri-Net 最小生成树
- POJ 1258 -Agri-Net- 最小生成树
- POJ 1258 Agri-Net(最小生成树)
- ACM-MST(最小生成树)之Agri-Net——poj1258
- POJ 1258 Agri-Net 【最小生成树入门题目】【prime模板】
- 【北大 夏令营笔记-最小生成树】poj1258-Agri-Net
- POJ-1258-Agri-Net [最小生成树]
- poj1258 Agri-Net (最小生成树prime)
- POJ1258 Agri-Net(简单的prim最小生成树)
- 最小生成树问题·POJ-1258 Agri-Net·prim算法
- POJ 1258:Agri-Net(最小生成树&&prim)
- POJ1258,Agri-Net,明显的最小生成树
- poj 1258 Agri-Net(prim求最小生成树)
- POJ 1258 Agri-Net 最小生成树
- POJ 1258 Agri-Net(最小生成树 Prim 模版题)
- POJ 1258 Agri-Net最小生成树 prim
- POJ 1258 Agri-Net(kuangbin带你飞 专题六:最小生成树)
- POJ 1258 Agri-Net(最小生成树Kruskal算法)
- POJ 1258 Agri-Net 最小生成树 Prim算法