Time Limit:3000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu

Appoint description: 
System Crawler  (2016-05-01)

Description

成大事者,不惟有超世之才,亦有坚忍不拔之志。

秋实大哥开了一家快餐店之后,由于人赢光环的影响,很快就赚得了大量的资金。为了继续实现心中的远大的理想,他打算在全国各地开设分店赚大钱。假设现在有n家快餐店(其中有至少有一家是旗舰店)分布在二维平面上,第i家快餐店的坐标为(xi, yi)。为了方便交通,他打算在一些快餐店之间修建道路使得任意一家快餐店都能够通过道路到达某一家旗舰店。

但是秋实大哥忙于赚钱和过节,没有时间来设计道路,你能帮助秋实大哥算出最少一共需要修建多长的道路吗?

Input

第一行一个整数n,表示快餐店的个数。(n≤6666) 
接下来n行,每行两个整数xi,yi,zi(−1000000≤xi,yi≤1000000)。表示第i家快餐店的位置(xi,yi),如果zi=0表示该店是普通的分店,如果 zi=1表示该店是旗舰店。

保证至少有一家旗舰店

Output

输出最少一共需要修建的道路长度,保留小数点后两位。

Sample Input


1 -1 0 
1 1 0 
0 0 1

Sample Output

2.83

Hint

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <set>
using namespace std;
typedef long long ll;
typedef unsigned long long Ull;
#define MM(a,b) memset(a,b,sizeof(a));
const double eps = 1e-10;
const ll inf = 1e15;
const double pi=acos(-1); const int max_v=6666;
int x[max_v],y[max_v],flag[max_v];
double mincost[max_v];
bool used[max_v]; double dist(int i,int j)
{
if(flag[i]&&flag[j]) return 0;
else return sqrt(pow((x[i]-x[j]),2)+pow((y[i]-y[j]),2));
}//用pow(,2)比两个相乘快多了,两个直接相乘都超时了 int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=1;i<=n;i++)
{
mincost[i]=inf;
used[i]=false;
scanf("%d %d %d",&x[i],&y[i],&flag[i]);
} double ans=0;
mincost[1]=0;
while(1)
{
int u=-1;
for(int v=1;v<=n;v++)
if(!used[v]&&(u==-1||mincost[v]<mincost[u]))
u=v;//找到离当前集合最近的点
if(u==-1) break;
used[u]=true;//加入当前集合
ans+=mincost[u];
for(int i=1;i<=n;i++)
if(!used[i])//优化,在还未加入集合的点中找
mincost[i]=min(dist(u,i),mincost[i]);
}
printf("%.2f\n",ans);
}
return 0;
}

  分析:很好的一道题;

1.旗舰店之间都连接一条权值为0的边,问题转化为求最小生成树;

2.因为是稠密图,开不了那么大的数组,kruskal就用不了了,只有用Prim算法了;

3.这道题超时卡的很严重,防止超时看代码;

CDOJ 1146 A - 秋实大哥与连锁快餐店 最小生成树 Prim算法 稠密图的更多相关文章

  1. UESTC_秋实大哥与连锁快餐店 2015 UESTC Training for Graph Theory<Problem A>

    A - 秋实大哥与连锁快餐店 Time Limit: 9000/3000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) S ...

  2. CDOJ 1061 C - 秋实大哥与战争 STL set 迭代器

    题目链接: C - 秋实大哥与战争 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Sub ...

  3. cdoj 秋实大哥搞算数

    地址:http://acm.uestc.edu.cn/#/contest/show/95 题目: N - 秋实大哥搞算数 Time Limit: 3000/1000MS (Java/Others)   ...

  4. CDOJ 1070 秋实大哥打游戏 带权并查集

    链接 F - 秋实大哥打游戏 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit ...

  5. CDOJ 1069 秋实大哥去打工 单调栈 下标处理

    E - 秋实大哥去打工 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit St ...

  6. CDOJ 1060 秋实大哥与快餐店 字典树 水题

    题目链接 B - 秋实大哥与快餐店 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Sub ...

  7. CDOJ 1057 秋实大哥与花 线段树 区间更新+区间查询

    链接: I - 秋实大哥与花 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit ...

  8. CDOJ 1059 秋实大哥与小朋友 STL(set)+离散化+BIT区间更新单点查询

    链接: A - 秋实大哥与小朋友 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Subm ...

  9. UESTC_秋实大哥与时空漫游 2015 UESTC Training for Graph Theory<Problem C>

    C - 秋实大哥与时空漫游 Time Limit: 4500/1500MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Su ...

随机推荐

  1. ROS安装(国内源)

    1.添加源 1.1 USTC源 sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ ...

  2. Django项目与mysql交互进行数据迁移时报错:AttributeError: 'str' object has no attribute 'decode'

    问题描述 Django项目启动,当我们执行命令 python manage.py makemigrations 出现如下错误: File , in last_executed_query query ...

  3. String转int,int转String

    String转int 1) int i = Integer.parseInt([String]);  int i = Integer.parseInt([String],[int radix]); 2 ...

  4. mpvue开发微信小程序之picker

    微信使用picker组件,bingchange 换成@change即可使用监听函数和方法 此处注意与微信多了一个mp的信息才能获取到选中的值. 获取当前日期+时间 function formatTim ...

  5. Android 一共有多少种动画?准确告诉你!

    Android 动画 Android 动画在开发中是不可或缺的功能,或者说是界面灵动的添加剂.那你是否总结过 Android 中总共为开发者提供了多少种方式的动画呢?今天就为大家总结归纳一下.   报 ...

  6. hadoop最简伪分布式安装

    本次安装运行过程使用的是Ubuntu16.04 64位+Hadoop2.5.2+jdk1.7.0_75 Notice: Hadoop2.5.2版本默认只支持64位系统 使用的jdk可以为1.7和1.8 ...

  7. pycharm 激激活码

    pycharm 激活码 [20191224亲测可用] http://lookdiv.com/neet/youd/codes.html    

  8. Qualcomm_Mobile_OpenCL.pdf 翻译-8-kernel性能优化

    这章将会说明一些kernel优化的小技巧. 8.1 kernel合并或者拆分 一个复杂的应用程序可能包含很多步骤.对于OpenCL的移植性和优化,可能会问需要开发有多少个kernel.这个问题很难回答 ...

  9. winmm.dll包含函数

    DLL 文件: winmm 或者 winmm.dll DLL 名称: Windows Multimedia API 描述: winmm.dll是Windows多媒体相关应用程序接口,用于低档的音频和游 ...

  10. 解决在linux下安装centos自带的mysql后,出现navicat远程连接失败的问题

    最近在学习关于数据库相关的东西,所以下午尝试在linux下自己搭建了myql,我的mysql是直接安装centos系统自带的,安装过程不再赘述 安装完成后,从linux后台登录也显示成功,但是就是从n ...