POJ 2349-Arctic Network【最小生成树】

最小生成树(Prim、Kruskal)算法,秒懂! 前言 在数据结构与算法的图论中,(生成)最小生成树算法是一种常用并且和生活贴切比较近的一种算法。但是可能很多人对概念不是很清楚,什么是最小生成树? 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。 通俗易懂的讲就是最小生成树包含原图的所有节点而只用最少的边和最小的权值距离。因为n个节点最少需要n-1个边联通,而距离就需要采取某种策略选择恰当的边。 学习最 阅读详情

题目描述

The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technologies are to be used in establishing the network: every outpost will have a radio transceiver and some outposts will in addition have a satellite channel. 
Any two outposts with a satellite channel can communicate via the satellite, regardless of their location. Otherwise, two outposts can communicate by radio only if the distance between them does not exceed D, which depends of the power of the transceivers. Higher power yields higher D but costs more. Due to purchasing and maintenance considerations, the transceivers at the outposts must be identical; that is, the value of D is the same for every pair of outposts. 

Your job is to determine the minimum D required for the transceivers. There must be at least one communication path (direct or indirect) between every pair of outposts.

Input

The first line of input contains N, the number of test cases. The first line of each test case contains 1 <= S <= 100, the number of satellite channels, and S < P <= 500, the number of outposts. P lines follow, giving the (x,y) coordinates of each outpost in km (coordinates are integers between 0 and 10,000).

Output

For each case, output should consist of a single line giving the minimum D required to connect the network. Output should be specified to 2 decimal points.

Sample Input

1
2 4
0 100
0 300
0 600
150 750

Sample Output

212.13

题意

需要自己计算边权的最小生成树,然后选需要建立的第k小边。

写这一篇的原因:

  1. 题意是选择第p-s个边,需要读懂才能选对。
  2. 写完一直是Output Limit Exceeded,但是并没有发现多输出了什么,后来发现了两个错误,一个坐标应用double类型而不是int,一个是存边的结构体数组粗心少开了100倍,以此铭记!!
  3. 很久没更博了~

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;

const int Maxe = 250000;
const int Maxn = 505;

struct edge{
    int from,to;
    double val;
};
struct point{
    double x,y;
};
point pt[Maxn];
edge e[Maxe];

int par[Maxn];
int cnt,t,s,p;

bool cmp(edge e1, edge e2)
{
    return e1.val<e2.val;
}
void Init()
{
    for(int i = 0; i < Maxn; i++)
        par[i] = i;
}
int Find(int x)
{
    if(x==par[x])
        return par[x];
    else
        return par[x] = Find(par[x]);
}
bool Union(int x, int y)
{
    x = Find(x);
    y = Find(y);
    if(x!=y)
    {
        par[y] = x;
        return true;
    }
    else
        return false;
}
double Kruskal()
{
    int res = 0;
    sort(e,e+cnt,cmp);
    Init();
    for(int i = 0; i < cnt; i++)
    {
        if(Union(e[i].from, e[i].to))
        {
            res++;
            if(res == p-s)
                return e[i].val;
        }
    }
}


int main()
{
    scanf("%d", &t);
    while(t--)
    {
        scanf("%d %d", &s, &p);
        cnt = 0;
        for(int i = 0; i < p; i++)
            scanf("%lf %lf", &pt[i].x, &pt[i].y);
        for(int i = 0; i < p-1; i++)
        {
            for(int j = i+1; j < p; j++)
            {
                e[cnt].from = i;
                e[cnt].to = j;
                e[cnt++].val = (double)sqrt((pt[i].x-pt[j].x)*(pt[i].x-pt[j].x)+(pt[i].y-pt[j].y)*(pt[i].y-pt[j].y));
            }
        }
        printf("%.2f\n", Kruskal());
    }
    return 0;
}

如有错误请指明~   ฅ●ω●ฅ

Uniapp+Vue3+Monorepo:如何优化你的前端开发流程(附完整配置代码) 本文详细介绍了如何利用Uniapp+Vue3+Monorepo技术栈优化前端开发流程,提升代码可维护性和团队协作效率。通过Monorepo架构实现依赖管理智能化、代码复用最大化和构建流程统一化,结合完整配置代码和实战指南,帮助开发者快速构建高性能跨端应用。 阅读详情

相关推荐

COD论文笔记VSCode: General Visual Salient and Camouflaged Object Detection with 2D Prompt Learning

VSCode模型通过引入领域特定提示和任务特定提示,结合提示区分损失,成功地在单一模型中处理多个显著目标检测和伪装目标检测任务。这种方法不仅提高了模型的性能,还展示了其对未见任务的泛化能力。作者使用 Visual saliency transformer ICCV 2021 作为baseline model这张图展示了VSCode模型的整体框架,特别强调了2D提示学习方法。

985小菜鸡 1626

最小生成树

最小生成树总结

ZhuRanCheng的博客 3万+

用 n8n 提取静态网页内容:从 HTTP Request 到 HTML 节点全解析

本文介绍了如何使用n8n的HTTP Request和HTML节点组合提取静态网页内容。首先通过HTTP Request节点获取网页HTML源码,然后使用HTML节点解析并提取所需数据。关键点包括:1)HTTP Request节点设置URL和GET方法;2)HTML节点配置Source Data为JSON并指定data字段;3)重点掌握Extraction Values参数,特别是CSS选择器(使用.和#定位元素)、Key命名、Return Value类型选择等。文章通过实例演示了标题和正文的提取方法,并提供

muyouking 4567

最小生成树详解

最小生成树来啦!

m0_69349401的博客 1万+

半导体功率器件IGBT工艺全流程

本文概述了功率器件IGBT(绝缘栅双极型晶体管)的关键制造流程。主要工艺包括:基板制备、离子注入(B+/P+/P+FS层)、绝缘膜形成与加工(CVD沉积及刻蚀)、沟槽刻蚀、电极形成(Emitter和Collector)等步骤。通过离子注入、化学气相沉积和物理气相沉积等半导体工艺,依次完成器件各功能层的构建,最终形成具备高功率特性的IGBT器件。该流程体现了功率半导体制造中典型的掺杂、薄膜沉积和图形化工艺技术。

750

轻量级NAS的隐秘战场:比特米盒CumeBox2与CasaOS的生态融合实践

本文探讨了比特米盒CumeBox2轻量级NAS设备与CasaOS操作系统的生态融合实践。通过硬件选型、系统部署、性能优化和应用场景分析,展示了如何将CumeBox2与CasaOS深度整合,打造经济实用的家庭数据管理中心,特别适合入门级用户和小型办公环境。

rl6adventurer的博客 894

图详解第三篇:最小生成树(Kruskal算法+Prim算法)

最小生成树:Kruskal算法+Prim算法

m0_70980326的博客 2万+

深入CRSF协议数据包:手撕STM32代码,教你像调试串口一样分析ELRS遥控数据流

本文深入解析CRSF协议数据包,通过手撕STM32代码,教你如何像调试串口一样分析ELRS遥控数据流。从硬件准备到数据包捕获状态机设计,再到高级数据分析技巧和实战应用,全面覆盖CRSF协议的解析与优化,帮助开发者构建稳定可靠的通信系统。

weixin_29194693的博客 337

poj2349 Arctic Network 最小生成树

poj2349 表示刚开始读题就读了n久没有读明白。。。明白了题意以后这题真真是个套模板的题 题意:哨站有两种通信方式:通过卫星和通过建立无线网络,通过卫星可以任意通信, 通过无线网络那么距离不能超过D,求这个最小距离D。 思路:s代表了可以扔掉s-1条边,p表示点 我采用了kruskal算法,在建立好的最小生成树中去掉s-1条边,那么返回上一个的权值w即可。 #include #in

竹丙丙丙丙 404

音频链路分析

音频链路分析摘要 本文分析了蓝牙音频设备(BES2700)的音频传输链路,主要包括通话和音乐播放两种场景: 通话链路: 下行:蓝牙接收数据→解码→通过Codec输出到扬声器 上行:麦克风采集→Codec处理→蓝牙编码发送 音乐播放链路: 通过A2DP协议接收高质量音频数据 经过解码、EQ调节等音频处理后输出 系统采用多线程消息机制处理音频任务,通过mailbox传递控制消息,由回调函数处理具体音频数据流。不同应用场景使用不同的蓝牙协议栈(HFP/HSP用于通话,A2DP用于媒体)和编码方式(mSBC/SBC

云淡风轻 85

使用PostgreSQL构建高可用数据库集群

在现代企业级应用中,数据库的高可用性已成为业务连续性的核心要求。PostgreSQL作为一款功能强大的开源关系型数据库,其高可用架构的设计直接影响着系统的稳定性和可靠性。

九天的专栏 1258

(最小生成树)POJ2349Arctic Network

POJ2349Arctic Network 题意&思路: 给你p个点和s-1条免费边,问使两两点连通的最小的最长边。 求第p-s条最长边,kruskal。用%lf记得交c++。 代码: #include<iostream> #include<stdio.h> #include<stdlib.h> #include<algorithm> #in...

Z7784562的博客 293

面向 Cloud Foundry、ABAP On-Prem 与 ABAP Cloud 的 SAP Fiori 开发全景:工具、流程与实战案例

SAP Fiori开发实战:基于BAS的一站式工程化方法 摘要: 本文系统梳理SAP Business Application Studio(BAS)在Fiori开发中的核心能力,提供三种典型后端(Cloud Foundry/ABAP On-Prem/ABAP Cloud)的对接方案。BAS通过预置Fiori Tools套件、MTA部署工具等扩展,支持从模板创建、可视化建模到构建部署的全流程。文章包含CAP+RAP服务对接、ABAP标准应用扩展等实战案例,重点解析注解驱动开发、Adaptation Proj

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 254

POJ 2349 Arctic Network (最小生成树)

POJ 2349 Arctic Network (最小生成树)

一枚空指针的博客 383

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Arctic Network/POJ 2349/最小生成树

Arctic Network/POJ 2349/最小生成树 题目 The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technologies are to be used in ...

weixin_45600829的博客 146

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[poj2349 Arctic Network]最小生成树

Arctic Network Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10805   Accepted: 3542 Description The Department of National Defence (DND) wishes to connect se

When you go away 652

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

POJ2349 Arctic Network 最小生成树

链接: 2349 题意:一个平面网络中 有M个卫星N个站点,每两个站点之间可以用通讯器联系或用卫星联系,用通讯器联系的花销和距离有关,用卫星联系则不需要花销。给出每个站点的坐标(x,y),求这个网络最小生成树的最大边。 题解: M个卫星一共可以减去M-1条边,通过prim算法求出生成树中的所有(n-1)条边,通过排序,再减去(m-1)

旧时光 1007

POJ 2349 Arctic Network 最小生成树

POJ 2349 Arctic Network 最小生成树 Kruskal

LucienShui 640

POJ 2349 Arctic Network 最小生成树题解

本题也是使用Prime和Kruskal都可以的最小生成树的题解。 本题一点新意就是:需要除去最大的S-1个距离,因为可以使用卫星覆盖这些距离。 技巧:建图建有向图,速度快点,不用计算两边。 这里使用Prime,因为是稠密图。 #include #include #include #include #include #include using std::sort; c

靖空间 1378

POJ 2349 Arctic Network(进阶指南,最小生成树)

算法竞赛进阶指南,454页,最小生成树,kruskal 题目意思: 有n个 北部前哨站, 每个站都可以用无线电收发器来通信,也可以用卫星电话通信; 卫星电话不受距离影响,但数量少,只有s个。无线电收发器每一个前哨站都有,受距离影响, 距离D越远,成本越高。无线电通信距离D都是相同的。 题目要求,使得n个前哨站能直接或间接通信, 成本最少,也就是无线电收发器的通信距离D最短。 本题要点: 1、 有 s个卫星,那么最小生成树就可以少 s - 1 条边。 原来树有 n点,n - 1 条边, 减去 s - 1 条,

qq_38232157的博客 177

POJ 2349 Arctic Network 最小生成树 prim && kruscal

Arctic Network 克鲁斯卡尔(kruscal)或普里姆算法(Prim) 求最小生成树。 Arctic Network Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13208 Accepted: 4284 Description The Department of National Defence (DND) wishes to connect several northern outposts by a w

jianjun的专栏 637

POJ 2349 Arctic Network(最小生成树思想)

POJ 2349 Arctic Network(最小生成树思想) http://poj.org/problem?id=2349 题意: 题意有点坑…        有P个站点需要远程通信,它们能通过两种方式来通信:无线电和卫星. 如果两个站点通过两个卫星接收器(坑,每个站点各一个卫星接收器)来通信的话,它们直接无论多远都行且不花钱. 如果两个站点通过无线电来通信的话,需要花钱且距离越长花费越

code 1288

POJ - 2349 Arctic Network 最小生成树

GDUT 2020寒假训练 图论 E 原题链接 POJ - 2349 Arctic Network E - Arctic Network 题目 Description The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two ...

xcy2001的博客 344

POJ 2349 Arctic Network 【最小生成树变形】

Description The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technologies are to be used in establishing the n

Kelisiya 395

POJ 2349 Arctic Network(最小生成树)

Arctic Network Time Limit: 2000MS   Memory Limit: 65536K       Description The Department of National Defence (DND) wishes to connect several northern outposts by a wirel

LYHVOYAGE的专栏 7784
上一篇: POJ 2031-Building a Space Station【最小生成树】
下一篇: POJ 3026-Borg Maze【最小生成树+bfs】
include_peng
博客等级 码龄9年 1粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值