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 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

最小生成树prime模板题目,不过题目中给出有的距离可以用卫星通信,所以把每一个最短权值求出来,然后从大到小排序,取第m个权值为最大权值。

程序代码:

#include<stdio.h>
#include<string.h>
#include<math.h>
struct node
{
  int x;
  int y;
}q[50000];
int e[2000][2000],dis[5000],book[5000];
double a[5000];
int main()
{
  int n,m,i,j,k,min,t1,t2,t3;
  int inf=99999999;
  int count,sum;
  int N;
  double tem;
  scanf("%d",&N);
  while(N--)
  {
    count=0;
    memset(dis,0,sizeof(dis));
    memset(book,0,sizeof(book));
    memset(a,0,sizeof(a));
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;i++)
      scanf("%d%d",&q[i].x,&q[i].y);
    for(i=1;i<=m;i++)
      for(j=1;j<=m;j++)
        if(i==j)  e[i][j]=0;
        else    e[i][j]=inf;
    for(i=1;i<m;i++)
      for(j=i+1;j<=m;j++)
        e[i][j]=e[j][i]=(q[i].x-q[j].x)*(q[i].x-q[j].x)+(q[i].y-q[j].y)*(q[i].y-q[j].y);
    for(i=1;i<=m;i++)
      dis[i]=e[1][i];
    book[1]=1;
    count++;
    while(count<m)
    {
      min=inf;
      for(i=1;i<=m;i++)
      {
        if(book[i]==0&&dis[i]<min)
        {
          min=dis[i];
          j=i;
        }
      }
      book[j]=1;
      a[count]=sqrt(dis[j]);
      count++;
      for(k=1;k<=m;k++)
      {
        if(book[k]==0&&dis[k]>e[j][k])
          dis[k]=e[j][k];
      }
    }
    for(i=1;i<m;i++)//把权值从大到小排序
      for(j=i+1;j<m;j++)
      {
        if(a[i]<a[j])
        {
          tem=a[i];
          a[i]=a[j];
          a[j]=tem;
        }
      }
    printf("%.2f\n",a[n]);
  }
  return 0; 
} 

相关文章
|
SQL 自然语言处理 安全
2024 年 8 月暨 ACL 2024 57篇代码大模型论文精选
2024年8月中旬,国际计算语言学大会ACL在泰国曼谷举行,展示了48篇代码大模型相关论文,包括24篇主会论文和24篇findings论文。主会论文涵盖XFT、WaveCoder、DolphCoder等创新方法,findings论文则探讨了代码注释增强、自动化程序修复等主题。此外,还额外整理了9篇8月最新代码大模型论文,涉及数据集合成、安全代码生成等多个前沿方向。欲了解更多,请访问我们的综述和GitHub项目。
1460 4
|
3天前
|
云安全 人工智能 算法
以“AI对抗AI”,阿里云验证码进入2.0时代
三层立体防护,用大模型打赢人机攻防战
1309 3
|
4天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
643 3
|
4天前
|
人工智能 Rust 运维
这个神器让你白嫖ClaudeOpus 4.5,Gemini 3!还能接Claude Code等任意平台
加我进AI讨论学习群,公众号右下角“联系方式”文末有老金的 开源知识库地址·全免费
|
11天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
754 5