bzoj1626 / P2872 [USACO07DEC]道路建设Building Roads
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的更多相关文章
- 洛谷——P2872 [USACO07DEC]道路建设Building Roads
P2872 [USACO07DEC]道路建设Building Roads 题目描述 Farmer John had just acquired several new farms! He wants ...
- 洛谷 P2872 [USACO07DEC]道路建设Building Roads 题解
P2872 [USACO07DEC]道路建设Building Roads 题目描述 Farmer John had just acquired several new farms! He wants ...
- 洛谷 P2872 [USACO07DEC]道路建设Building Roads
题目描述 Farmer John had just acquired several new farms! He wants to connect the farms with roads so th ...
- $P2872\ [USACO07DEC]道路建设Building\ Roads$
\(problem\) 错的原因是\(RE\)(大雾 , 时刻谨记 \(N\) 个地方的话 保守开 \(\frac{N^2}{2}\) 大小. 因为是边. 边最多的情况即完全图 : $1+2+3+4. ...
- 题解 P2872 【[USACO07DEC]道路建设Building Roads】
这道题真的是令人窒息,Kruskal调了贼久一直RE,最后发现数组大小稍微少了那么一点点.(也就10倍吧..) 言归正传,根据本人的分析(以及算法标签的提示),这是一道求最小生成树的题目,当然要注意已 ...
- 洛谷 P2872 【[USACO07DEC]道路建设Building Roads】
P2872 传送门 首先 题目概括:题目让着求使所有牧场都联通.需要修建多长的路. 显然这是一道最小生成树板子题(推荐初学者做). 那我就说一下kruskal吧. Kruskal算法是一种用来查找最小 ...
- [USACO07DEC]道路建设Building Roads
题目:洛谷P2872.POJ3625. 题目大意:给你n个点的坐标,有些点已经有边连通,现在要你连上剩下的所有点,求这些边的最小长度是多少(不包括原来的边). 解题思路:最小生成树,把所有边处理出来, ...
- USACO 07DEC 道路建设(Building Roads)
Farmer John had just acquired several new farms! He wants to connect the farms with roads so that he ...
- USACO Building Roads
洛谷 P2872 [USACO07DEC]道路建设Building Roads 洛谷传送门 JDOJ 2546: USACO 2007 Dec Silver 2.Building Roads JDOJ ...
随机推荐
- React的setState如何实现同步处理数据
React里面的使用setState来进行状态的更新,为了性能的提升,此时的过程是异步操作的,那我们如果在一个进程里面想同步操作改变了状态的值怎么办呢,这里需要使用回调函数了: this.setSta ...
- 树形dp-hdu-3721-Building Roads
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3721 题目意思: 给一颗树,求移动一条边(边权值不变)到另外的位置,还是一棵树.求最小的树的直径. ...
- Python学习之k-近邻算法
1. K-近邻算法 # coding=utf-8 from numpy import * import operator def createDataSet(): group = array([[1. ...
- 【原创】asp.net内部原理(三) 第三个版本 (最详细的版本)
前言: 今天继续吧这个系列补齐,这几天公司的项目比较忙,回到家已经非常的累了,所以也没顾得上天天来这里分享一些东西和大家一起探讨,但是今天晚上我还是坚持打开电脑,分享一些asp.net生命周期的知识, ...
- ios 监听设备旋转方向
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { if(fromI ...
- 一个Activity中使用两个layout实例
package com.sbs.aas2l; import android.app.Activity; import android.os.Bundle; import android.view.Vi ...
- 用到了yii2 hasMany() 方法,一对多关联
view页面代码:其中supply,item,price是一个AR类都是一个类,item和prices是一对多关系: [ 'label' => '参考', 'format' => 'htm ...
- Log4j最简入门及实例
Log4j真的很简单,简单到令人发指的地步.不是要记录日志吗?那就给你一个Log,然后你用Log来写东西就行了,先来一个完整类示例: package test; import org.apache.c ...
- ValueError: Only call `sparse_softmax_cross_entropy_with_logits` with named a
第五章中完整的训练MNIST数据的神经网络模型的程序代码中,直接运行程序的话会遇到以下的错误. 把下面的这行代码 # 计算交叉熵及其平均值 cross_entropy = tf.nn.sparse_s ...
- What Drives the Need for Database Sharding? DATABASE SHARDING
wIO瓶颈 http://www.agildata.com/database-sharding/ What Drives the Need for Database Sharding? Databas ...