P2872 [USACO07DEC]道路建设Building Roads

kruskal求最小生成树。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#define re register
using namespace std;
typedef double ld;
typedef long long ll;
ll sqr(ll a){return a*a;}
#define N 1002
struct node{ll x,y;}a[N];
struct edge{
int f,t; ld dis;
edge(){}
edge(int A,int B,ld C):
f(A),t(B),dis(C)
{}
bool operator < (const edge &tmp) const{return dis<tmp.dis;}
}b[N*N];
int n,m,tp,fa[N],k; ld ans;
ld dist(node A,node B){return sqrt((ld)(sqr(A.x-B.x)+sqr(A.y-B.y)));}
int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
void uni(int x,int y){
int r1=find(x),r2=find(y);
if(r1!=r2) fa[r2]=r1;
}
int main(){
scanf("%d%d",&n,&m); int q1,q2;
for(re int i=;i<=n;++i){
scanf("%lld%lld",&a[i].x,&a[i].y); fa[i]=i;
for(re int j=;j<i;++j) b[++tp]=edge(j,i,dist(a[j],a[i]));//把可能的边存起来
}sort(b+,b+tp+);
for(re int i=;i<=m;++i){
scanf("%d%d",&q1,&q2);
if(find(q1)!=find(q2)) ++k,uni(q1,q2);
}
for(re int i=;i<=tp&&k<n-;++i)
if(find(b[i].f)!=find(b[i].t)){
uni(b[i].f,b[i].t);
ans+=b[i].dis; ++k;
}
printf("%.2lf",ans);
return ;
}

bzoj1626 / P2872 [USACO07DEC]道路建设Building Roads的更多相关文章

  1. 洛谷——P2872 [USACO07DEC]道路建设Building Roads

    P2872 [USACO07DEC]道路建设Building Roads 题目描述 Farmer John had just acquired several new farms! He wants ...

  2. 洛谷 P2872 [USACO07DEC]道路建设Building Roads 题解

    P2872 [USACO07DEC]道路建设Building Roads 题目描述 Farmer John had just acquired several new farms! He wants ...

  3. 洛谷 P2872 [USACO07DEC]道路建设Building Roads

    题目描述 Farmer John had just acquired several new farms! He wants to connect the farms with roads so th ...

  4. $P2872\ [USACO07DEC]道路建设Building\ Roads$

    \(problem\) 错的原因是\(RE\)(大雾 , 时刻谨记 \(N\) 个地方的话 保守开 \(\frac{N^2}{2}\) 大小. 因为是边. 边最多的情况即完全图 : $1+2+3+4. ...

  5. 题解 P2872 【[USACO07DEC]道路建设Building Roads】

    这道题真的是令人窒息,Kruskal调了贼久一直RE,最后发现数组大小稍微少了那么一点点.(也就10倍吧..) 言归正传,根据本人的分析(以及算法标签的提示),这是一道求最小生成树的题目,当然要注意已 ...

  6. 洛谷 P2872 【[USACO07DEC]道路建设Building Roads】

    P2872 传送门 首先 题目概括:题目让着求使所有牧场都联通.需要修建多长的路. 显然这是一道最小生成树板子题(推荐初学者做). 那我就说一下kruskal吧. Kruskal算法是一种用来查找最小 ...

  7. [USACO07DEC]道路建设Building Roads

    题目:洛谷P2872.POJ3625. 题目大意:给你n个点的坐标,有些点已经有边连通,现在要你连上剩下的所有点,求这些边的最小长度是多少(不包括原来的边). 解题思路:最小生成树,把所有边处理出来, ...

  8. USACO 07DEC 道路建设(Building Roads)

    Farmer John had just acquired several new farms! He wants to connect the farms with roads so that he ...

  9. USACO Building Roads

    洛谷 P2872 [USACO07DEC]道路建设Building Roads 洛谷传送门 JDOJ 2546: USACO 2007 Dec Silver 2.Building Roads JDOJ ...

随机推荐

  1. ubuntu下code::blocks设置运行窗口为gnome命令行

    code::blocks编译运行C++程序(F9)默认出现的运行串口在有鼠标的情况下进行粘贴还是很方便的,只要按下鼠标滑轮,位与剪切板中的数据就能粘贴到运行串口中.但是对于用笔记本而且没有鼠标地童鞋这 ...

  2. MQTT协议笔记之mqtt.io项目Websocket协议支持

    前言 MQTT协议专注于网络.资源受限环境,建立之初不曾考虑WEB环境,倒也正常.虽然如此,但不代表它不适合HTML5环境. HTML5 Websocket是建立在TCP基础上的双通道通信,和TCP通 ...

  3. CSS-布局样式之筛选条件右边线的处理方法(no CSS3)

    先上图:

  4. Python学习之k-近邻实例

    海伦收集约会数据巳经有了一段时间,她把这些数据存放在文本文件datingTestSet.txt中,每个样本数据占据一行,总共有 1000 行.海伦的样本主要包含以下 3 种特征: 1. 每年获得的飞行 ...

  5. Array数组去重

    1.循环方法 function methodOne(arr){ var result = [], arrLen = arr.length, item = null, i,j; for(var i = ...

  6. 【BZOJ4101】[Usaco2015 Open]Trapped in the Haybales Silver 二分

    [BZOJ4101][Usaco2015 Open]Trapped in the Haybales (Silver) Description Farmer John has received a sh ...

  7. jdbc将数据库连接信息放置配置文件中

    目录如下: jdbcConnection.java: package jdbc01; import java.io.InputStream; import java.sql.Connection; i ...

  8. 微信小程序 --- 设置页面的标题

    第一种方式:修改 page.json文件 { "navigationBarTitleText": "豆瓣 - 电影" } 第二种方式:使用 JS 修改: wx. ...

  9. 单源最短路(spfa),删边求和

    http://acm.hdu.edu.cn/showproblem.php?pid=2433 Travel Time Limit: 10000/2000 MS (Java/Others)    Mem ...

  10. 07.Curator计数器

        这一篇文章我们将学习使用Curator来实现计数器.顾名思义,计数器是用来计数的,利用ZooKeeper可以实现一个集群共享的计数器.只要使用相同的path就可以得到最新的计数器值,这是由Zo ...