poj 1258 最小生成树 模板
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 最小生成树 模板的更多相关文章
- POJ 1258 最小生成树
23333333333 完全是道水题.因为是偶自己读懂自己做出来的..T_T.prim的模板题水过. DESCRIPTION:John竞选的时候许诺会给村子连网.现在给你任意两个村子之间的距离.让你求 ...
- 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 ...
- 最小生成树 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 // 顶点的最大个数 ( ...
- POJ 1258 + POJ 1287 【最小生成树裸题/矩阵建图】
Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet c ...
- Poj 2187 凸包模板求解
Poj 2187 凸包模板求解 传送门 由于整个点数是50000,而求凸包后的点也不会很多,因此直接套凸包之后两重循环即可求解 #include <queue> #include < ...
- POJ 1258 Agri-Net|| POJ 2485 Highways MST
POJ 1258 Agri-Net http://poj.org/problem?id=1258 水题. 题目就是让你求MST,连矩阵都给你了. prim版 #include<cstdio> ...
- POJ-图论-最小生成树模板
POJ-图论-最小生成树模板 Kruskal算法 1.初始时所有结点属于孤立的集合. 2.按照边权递增顺序遍历所有的边,若遍历到的边两个顶点仍分属不同的集合(该边即为连通这两个集合的边中权值最小的那条 ...
- POJ 1258:Agri-Net Prim最小生成树模板题
Agri-Net Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 45050 Accepted: 18479 Descri ...
- POJ 1258 Agri-Net(最小生成树,模板题)
用的是prim算法. 我用vector数组,每次求最小的dis时,不需要遍历所有的点,只需要遍历之前加入到vector数组中的点(即dis[v]!=INF的点).但其实时间也差不多,和遍历所有的点的方 ...
随机推荐
- zabbix api调用
zabbix api调用 api能干什么 Zabbix API allows you to programmatically retrieve and modify the configuration ...
- FPGA开发流程
需求说明:Verilog设计 内容 :FPGA开发基本流程及注意事项 来自 :时间的诗 原文来自:http://www.dzsc.com/data/2015-3-16/1080 ...
- android 常用方法总结
public class Toolkit { /** * * Role:Telecom service providers获取手机服务商信息 <BR> * * 需要加入权限<uses ...
- 《TomCat与Java Web开发技术详解》(第二版) 第六章节的学习总结 ---- JSP技术
第六章主要介绍了JSP的相关知识. 1.JSP:是通过在HTML文件中加入java程序片段(Java Scriptlet)和JSP标记,就构成了JSP文件.JSP实质上是Servlet.JSP的API ...
- python 装饰器 (个人理解就是前置的内建函数)
感谢有篇文件详细介绍[简单 12 步理解 Python 装饰器]http://python.jobbole.com/85056/ 1.首先介绍内建函数 2.转换为装饰器 3.执行顺序 4.装饰器实用
- android webview 加载本地html 实现 与 java 之间的相互响应
1.布局 <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:androi ...
- Oracle11g完全卸载方法
一.在oracle11G以前卸载oracle会存在卸载不干净,导致再次安装失败的情况,在运行services.msc打开服务,停止Oracle的所有服务. 二. oracle11G自带一个卸载批处理\ ...
- Command 'java' not found during running appium
Question: When Execution code:driver = new RemoteWebDriver(new Uri("http://127.0.0.1:4723/wd/hu ...
- python 快速排序详述
快速排序是对“冒泡排序”的优化算法,都属于交换排序类. 描述:它通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快速 ...
- 【BZOJ4928】第二题 树hash+倍增
[BZOJ4928]第二题 Description 对于一棵有根树,定义一个点u的k-子树为u的子树中距离u不超过k的部分. 注意,假如u的子树中不存在距离u为k的点,则u的k-子树是不存在的. 定义 ...