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的点).但其实时间也差不多,和遍历所有的点的方 ...
随机推荐
- Hibernate学习之双向一对多映射(双向多对一映射)
© 版权声明:本文为博主原创文章,转载请注明出处 1.双向映射与单向映射 - 一对多单向映射:由一方(教室)维护映射关系,可以通过教室查询该教室下的学生信息,但是不能通过学生查询该学生所在教室信息: ...
- Hibernate学习之一级缓存
© 版权声明:本文为博主原创文章,转载请注明出处 Hibernate缓存: - 缓存是为了降低应用程序对物理数据源访问的频次,从而提供应用程序的运行性能的一种策略 - Hibernate缓存是提升和优 ...
- 匿名函数块级作用域以及在JQuery中的应用
最近经常回在群里面看到有些朋友问如下这样的js写法该如何理解的的问题,虽然可能对匿名函数有些理解,但是有时候看到JQuery源码或者其他JS库中同样的写法时,就有点不理解了,今天再次分享下这方面的知识 ...
- js 正则匹配 域名【host】
如果直接在js中是可以直接取到hostname的,以下方式是通过正则匹配: var url = "http://www.cnblogs.com/cench" var reg = / ...
- MySQL_知识点
1.执行顺序 语句模板: (8)SELECT (9)DISTINCT (11)<Top Num> <select list> (1)FROM [left_table] (3)& ...
- Sqlserver------SQLServer2008R2中新增用户并设定表的访问权限
在进行项目对接时,有时候处于系统安全性考虑,我们需要设置数据库的访问权限,这个时候,我们可以新增一个用户,然后设定用户的访问权限,具体步骤如下: 1, 新建登录对象 2, 点击用户映射 3, 操 ...
- js 抢月饼
面源码: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" co ...
- Java并发专题 带返回结果的批量任务执行
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/27250059 一般情况下,我们使用Runnable作为基本的任务表示形式,但是R ...
- 通讯录链表实现之C++
前言 在mooc上学习了链表中的顺序表和单链表,并使用单链表数据结构跟着老师完成通讯录创建.通过这次链表练习使用,做一些总结. 自顶向下设计探索. 功能需求 在功能实现上,通讯录主要包括,创建联系人, ...
- MySQL 下 ROW_NUMBER / DENSE_RANK / RANK 的实现
原文链接:http://hi.baidu.com/wangzhiqing999/item/7ca215d8ec9823ee785daa2b MySQL 下 ROW_NUMBER / DENSE_RAN ...