POJ  最小生成树模板
Kruskal算法 #include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#include<limits.h>
#include<math.h>
#include<queue>
#include<stack>
#define max(a, b) a>b?a:b;
#define min(a, b) a<b?a:b;
using namespace std;
const int N = ; typedef struct rode
{
int x, y, l;
} RODE;
RODE maps[N];
int f[N]; int cmp(const void *a, const void *b)
{
RODE *c, *d;
c=(RODE *)a;
d=(RODE *)b;
return c -> l - d -> l;
} void Kruskal(int k);
int Find(int x); int main()
{
int n, i, j, k, a;
while(scanf("%d", &n)!=EOF)
{
k=;
for(i=; i<n; i++)
{
f[i]=i;
}
for(i=; i<n; i++)
for(j=; j<n; j++)
{
scanf("%d", &a);
maps[k].x=i;
maps[k].y=j;
maps[k].l=a;
k++;
}
qsort(maps, k, sizeof(maps[]), cmp);
Kruskal(k);
}
return ;
}
void Kruskal(int k)
{
int ans=;
for(int i=; i<k; i++)
{
int ru=Find(maps[i].x);
int rv=Find(maps[i].y);
if(ru!=rv)
{
f[ru]=rv;
ans+=maps[i].l;
}
}
printf("%d\n", ans);
}
int Find(int x)
{
if(f[x]!=x)
f[x]=Find(f[x]);
return f[x];
} 另一种 prim算法 和dijkstra算法很像 #include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm> using namespace std; int Map[][];
const int oo=0xfffffff;
int visit[];
int dist[];
int prim(int s,int n)
{
int ans=;
memset(visit,,sizeof(visit));
for(int i=; i<=n; i++)
dist[i]=Map[s][i];
visit[s]=;
for(int i=; i<n; i++)
{
int index;
int Min=oo;
for(int j=; j<=n; j++)
{
if(!visit[j]&&dist[j]<Min)
{
index=j;
Min=dist[j];
}
}
ans+=Min;
visit[index]=;
for(int j=; j<=n; j++)
{
if(!visit[j]&&dist[j]>Map[index][j])
{
dist[j]=Map[index][j];
}
} }
return ans;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
{
Map[i][j]=oo;
}
} for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
{
scanf("%d",&Map[i][j]);
}
}
printf("%d\n",prim(,n));
}
return ;
}

poj 1258 最小生成树 模板的更多相关文章

  1. POJ 1258 最小生成树

    23333333333 完全是道水题.因为是偶自己读懂自己做出来的..T_T.prim的模板题水过. DESCRIPTION:John竞选的时候许诺会给村子连网.现在给你任意两个村子之间的距离.让你求 ...

  2. poj 1251 poj 1258 hdu 1863 poj 1287 poj 2421 hdu 1233 最小生成树模板题

    poj 1251  && hdu 1301 Sample Input 9 //n 结点数A 2 B 12 I 25B 3 C 10 H 40 I 8C 2 D 18 G 55D 1 E ...

  3. 最小生成树 10.1.5.253 1505 poj 1258 http://poj.org/problem?id=1258

    #include <iostream>// poj 1258 10.1.5.253 1505 using namespace std; #define N 105 // 顶点的最大个数 ( ...

  4. POJ 1258 + POJ 1287 【最小生成树裸题/矩阵建图】

    Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet c ...

  5. Poj 2187 凸包模板求解

    Poj 2187 凸包模板求解 传送门 由于整个点数是50000,而求凸包后的点也不会很多,因此直接套凸包之后两重循环即可求解 #include <queue> #include < ...

  6. POJ 1258 Agri-Net|| POJ 2485 Highways MST

    POJ 1258 Agri-Net http://poj.org/problem?id=1258 水题. 题目就是让你求MST,连矩阵都给你了. prim版 #include<cstdio> ...

  7. POJ-图论-最小生成树模板

    POJ-图论-最小生成树模板 Kruskal算法 1.初始时所有结点属于孤立的集合. 2.按照边权递增顺序遍历所有的边,若遍历到的边两个顶点仍分属不同的集合(该边即为连通这两个集合的边中权值最小的那条 ...

  8. POJ 1258:Agri-Net Prim最小生成树模板题

    Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 45050   Accepted: 18479 Descri ...

  9. POJ 1258 Agri-Net(最小生成树,模板题)

    用的是prim算法. 我用vector数组,每次求最小的dis时,不需要遍历所有的点,只需要遍历之前加入到vector数组中的点(即dis[v]!=INF的点).但其实时间也差不多,和遍历所有的点的方 ...

随机推荐

  1. js事件之onmousedown和onmouseup

    <!DOCTYPE html> <html> <head> <script> function mouseDown() { document.getEl ...

  2. orcad 里误给元件添加了属性,如何删除

    1.先尝试点击delete property 2.第一步不行就右键选择filters----->remove current filter进行删除

  3. lua学习笔记(八)

      元表与元方法  基本概念         1.lua中每个值都有一个元表         2.table和userdata可以有各自独立的元表         3.其它类型的值共享其类型所属的单一 ...

  4. gulp配置,实例演示

    项目完成后的目录 我们所需要的插件为:gulp-minify-css gulp-concat gulp-uglify gulp-rename del 如下图所示,完成后的项目目录结构: 附加,获取pa ...

  5. 详细解读:远程线程注入DLL到PC版微信

    一.远程线程注入的原理 1.其基础是在 Windows 系统中,每个 .exe 文件在双击打开时都会加载 kernel32.dll 这个系统模块,该模块中有一个 LoadLibrary() 函数,可以 ...

  6. cocos2dx游戏 地图

    #include "HelloWorld.h" USING_NS_CC; CCScene* MyHelloWorld::scene() { // 'scene' is an aut ...

  7. wamp 两个不同的php.ini

    最近在本地开发的windows wamp环境安装一个vld 扩展,碰见一个奇怪的问题,phpinfo() 有 而cli 命令模式里面却没有 最后发现wamp phpinfo()和cli命令模式指向的p ...

  8. Java -- 数字

    @.运用BigDecimal处理Double类型的算术运算的精度问题 原文:https://blog.csdn.net/j754379117/article/details/52238396 可使用 ...

  9. Windows下搭建React Native Android开发环境

    准备工作 安装JDK 安装Android SDK 安装C++环境 安装node.js 安装react-native命令行工具 创建项目 运行packager 运行模拟器 安卓运行 安卓调试 安装JDK ...

  10. 关于html的小bug

    废话不说 看代码 因为最近比较忙  所以不闲聊了啊 <!DOCTYPE html> <html lang="en"> <head> <me ...