poj1251--Kruskal
/*
* poj1251-- Kruskal
* date 2014/7/15
* state AC
*/ #include <iostream>
#include <algorithm>
#include <fstream>
#include <cstdio>
#include <cstring> using namespace std; int const MAXN=30+100;
int u[MAXN];
int v[MAXN];
int w[MAXN+50]; int p[MAXN];
int r[MAXN]; int cmp(const int i,const int j)
{
return w[i]<w[j];
} int unionFindSet(int x)
{
return p[x]==x?x:p[x]=unionFindSet(p[x]);
} int Kruskal(int n,int m)
{
int ans=0; //memset(p,0,sizeof(p));
//memset(r,0,sizeof(r)); for(int i=0;i<n;i++)
p[i]=i;
for(int i=0;i<m;i++)
r[i]=i; //mem
sort(r,r+m,cmp);
for(int i=0;i<m;i++)
{
int e=r[i];
int x=unionFindSet(u[e]);
int y=unionFindSet(v[e]);
if(x!=y)
{
ans+=w[e];
p[x]=y;
}
}
return ans;
}
int main()
{
//cout << "Hello world!" << endl;
//freopen("input.txt","r",stdin);
char a[2],b[2];
int c;
int m;
int n;
int edgeNum;
while(scanf("%d",&n))
{
if(n==0)break; memset(u,0,sizeof(u));
memset(v,0,sizeof(v));
memset(w,0,sizeof(w)); edgeNum=0;
for(int i=0;i<n-1;i++)
{
scanf("%s%d",a,&m);
for(int j=0;j<m;j++)
{
scanf("%s%d",b,&c);
u[edgeNum]=a[0]-'A';
v[edgeNum]=b[0]-'A';
w[edgeNum]=c;
edgeNum++;
}
}
//
/*cout<<"edgeNumber: "<<edgeNum<<endl;
for(int k=0;k<edgeNum;k++)
cout<<u[k]<<" "<<v[k]<<" "<<w[k]<<" ";
cout<<"---"<<endl;
*/
cout<<Kruskal(n,edgeNum)<<endl;
}
return 0;
}
poj1251--Kruskal的更多相关文章
- POJ1251(Kruskal水题)
https://vjudge.net/problem/POJ-1251 The Head Elder of the tropical island of Lagrishan has a problem ...
- poj1251 Jungle Roads(Prime || Kruskal)
题目链接 http://poj.org/problem?id=1251 题意 有n个村庄,村庄之间有道路连接,求一条最短的路径能够连接起所有村庄,输出这条最短路径的长度. 思路 最小生成树问题,使用普 ...
- POJ1251 Jungle Roads (最小生成树&Kruskal&Prim)题解
题意: 输入n,然后接下来有n-1行表示边的加边的权值情况.如A 2 B 12 I 25 表示A有两个邻点,B和I,A-B权值是12,A-I权值是25.求连接这棵树的最小权值. 思路: 一开始是在做莫 ...
- POJ1251 Jungle Roads(Kruskal)(并查集)
Jungle Roads Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23882 Accepted: 11193 De ...
- POJ1251 Jungle Roads Kruskal+scanf输入小技巧
Jungle Roads The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign ai ...
- poj1251 Jungle Roads Kruskal算法+并查集
时限: 1000MS 内存限制: 10000K 提交总数: 37001 接受: 17398 描述 热带岛屿拉格里山的首长有个问题.几年前,大量的外援花在了村庄之间的额外道路上.但是丛林不断地超 ...
- 最小生成树练习1(克鲁斯卡尔算法Kruskal)
今天刷一下水题练手入门,明天继续. poj1861 Network(最小生成树)新手入门题. 题意:输出连接方案中最长的单根网线长度(必须使这个值是所有方案中最小的),然后输出方案. 题解:本题没有直 ...
- POJ-1251 Jungle Roads---MST裸题(需要编号)
题目链接: https://vjudge.net/problem/POJ-1251 题目大意: 首先给你一个图,需要你求出最小生成树,输入N个节点,用大写字母表示了节点,然后节点与节点之间有权值. 思 ...
- 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用
图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ...
- 最小生成树---Prim算法和Kruskal算法
Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (gra ...
随机推荐
- UVA 1411 - Ants(二分图完美匹配)
UVA 1411 - Ants 题目链接 题意:给定一些黑点白点,要求一个黑点连接一个白点,而且全部线段都不相交 思路:二分图完美匹配,权值存负的欧几里得距离,这种话,相交肯定比不相交权值小,所以做一 ...
- 使用Simple DNS plus 构建自己的DNS
1.下载并安装Simple DNS plus 2.界面例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2tfYm9zcw==/font/5a6L ...
- 【Android进阶】使用Andbase快速开发框架实现常见侧滑栏和滑动标签页组合效果
最近闲来无事,在网上寻找源代码看,突然发现了一个国内技术牛人开发的快速开发框架Andbase,花了一天时间研究了下源码和怎么使用,现将开发常见的侧滑栏和滑动标签页组合效果的使用介绍个大家,希望可以减少 ...
- 从苹果系统InstallESD.dmg里提取IOS
右键下载的Mac OS X Mountain Lion镜像:InstallESD.dmg,选择7-zip------打开压缩包 2.双击InstallMacOSX.pkg 3.选中InstallESD ...
- 重写TextBox实现显示提示信息
/// <summary> /// TextBox提示信息 /// </summary> /// <author>Tim_et</author> /// ...
- Linux在什么样的从脚本文件数据库sh格式改变sql格式
在软件开发过程中,经常参与Linux从下一个脚本文件数据库sh格式改变sql格式问题.在本文中,一个实际的脚本文件,例如.描述格式转换过程. 1. sh文件内容 本文中的文件名称为exa ...
- plsql dev中Dynamic Performance Tables not accessible分析解决(转)
使用plsql dev的朋友多遇到过类此如下面的提示: Dynamic Performance Tables not accessible, Automatic Statistics Disabled ...
- 于linux已安装moodle
本文介绍了两个虚拟机的安装linux server 及相关服务,随着后这些基础.安装应用程序服务 moodle 2.7+ 它是使用最广泛的平台,网络课程. 在安装过程中moodle之前,需要支持软件 ...
- 关闭 MsMpEng.exe
MsMpEng.exe是Windows Defender 自动保护服务的核心引擎. 系统是win8.1 最近发现MsMpEng.exe是任务管理器里面最占内存的一个程序,且无法强制结束程序.偶然发现一 ...
- 原生js实现 常见的jquery的功能
原生选择器 充分利用 bind(this)绑定 <div id="box"> <ul> <li >111 </li> <l ...