当前位置: 首页 > news >正文

打卡信奥刷题(3071)用C++实现信奥题 P6951 [ICPC 2018 WF] Wireless is the New Fiber

P6951 [ICPC 2018 WF] Wireless is the New Fiber

题目描述

一种新型的无限带宽无线通信刚刚通过测试,并被证明可以替代现有的基于光纤的通信网络,后者正努力跟上流量增长的步伐。你被委托决定新通信网络的布局。当前的通信网络由一组节点(用于路由消息)和光纤链路组成,每条链路连接两个不同的节点。对于每对节点,至少存在一条(但可能更多,为了带宽目的)光纤路径。

新的通信网络将不再使用光纤。相反,它将使用无线链路,每条链路连接两个节点。这些链路具有无限带宽,但成本昂贵,因此决定尽可能少地建设这些链路以提供连通性;对于每对节点,应该只有一条路径通过无线链路连接。此外,你发现每个节点的设计都考虑了特定数量的连接。如果每个节点的连接数与今天不同,则需要重新组织,这将非常昂贵。

你的任务是设计新的网络,使其在每对节点之间恰好有一条路径,同时最小化与原始网络连接数不同的节点数量。图 K.1 显示了原始网络和样例输入 1 的解决方案。

图 K.1:样例输入 1 的示意图。

输入格式

输入以一行两个整数n ( 2 ≤ n ≤ 10 4 ) n (2 \le n \le 10^{4})n(2n104)m ( 1 ≤ m ≤ 10 5 ) m (1 \le m \le 10^{5})m(1m105)开始,表示现有网络中的节点数和光纤链路数。节点编号从0 00n − 1 n - 1n1。接下来的m mm行中的每一行包含两个不同的整数a i a_{i}aib i b_{i}bi,表示第i ii条光纤链路连接编号为a i a_{i}aib i b_{i}bi的节点。保证对于每对节点,至少存在一条路径连接这两个节点。任何一对节点之间可能有多条光纤链路连接。

输出格式

显示需要更改连接数的最小节点数。从下一行开始,以与输入相同的格式显示连接系统。即,显示一行包含节点数(这将与输入相同)和无线链路数,然后在后续行中描述这些链路。如果有多种布局可能,任何有效的布局都将被接受。

输入输出样例 #1

输入 #1

7 11 0 1 0 2 0 5 0 6 1 3 2 4 1 2 1 2 1 5 2 6 5 6

输出 #1

3 7 6 0 1 0 2 0 5 0 6 3 6 4 6

输入输出样例 #2

输入 #2

4 3 0 1 2 1 2 3

输出 #2

0 4 3 2 1 1 3 0 2

说明/提示

时间限制:2 秒,内存限制:1024 MB。

SPJ 提供者:@shenyouran。

题面翻译由 ChatGPT-4o 提供。

C++实现

#include<bits/stdc++.h>usingnamespacestd;intn,m,d[10005],pl[10005];intmain(){cin>>n>>m;for(inti=1,x,y;i<=m;i++)cin>>x>>y,d[x]++,d[y]++;for(inti=0;i<n;i++)pl[i]=i,d[i]--;sort(pl,pl+n,[](intx,inty){returnd[x]<d[y];});ints=0,ans=0;for(inti=0;i<n;i++){if(s+d[pl[i]]>n-2)break;s+=d[pl[i]],ans++;}cout<<n-ans<<'\n'<<n<<' '<<n-1<<'\n';for(inti=ans;i<n;i++){if(s==n-2)d[pl[i]]=0;elsed[pl[i]]=1,s++;}sort(pl,pl+n,[](intx,inty){returnd[x]<d[y];});for(inti=0,j=0;i+2<n;i++){while(!d[pl[j]])j++;d[pl[j]]--,cout<<pl[i]<<' '<<pl[j]<<'\n';}cout<<pl[n-2]<<' '<<pl[n-1]<<'\n';}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

http://www.jsqmd.com/news/599020/

相关文章:

  • 证件照 API 怎么选?2026 年主流方案深度对比 + Python / Java / PHP 对接示例
  • 别再让GUI卡死了!用PySide6信号槽搞定后台任务,附完整线程示例代码
  • 5个实战技巧:构建高效跨平台番茄钟应用
  • RetDec反编译器深度解析:从二进制到高级语言的智能转换
  • C语言的初步认识
  • 开源可部署+零代码:春联生成模型-中文-base WebUI快速体验指南
  • 关于V6 Command Center系列实时频谱仪型号匹配
  • 大学生必看!用Python给智慧树课程挂机:从环境配置到定时播放完整指南
  • 实战应用开发:为风车动漫网站集成个性化推荐与弹幕功能
  • AutoGLM-Phone-9B效果展示:轻量化大模型在移动端的惊艳表现
  • 前端如何实现长连接之使用WebSocket长连接
  • MaxKB源码部署实战:当Docker遇上Poetry,如何优雅解决PostgreSQL pgvector依赖和路径硬编码问题?
  • RVC快速体验:无需复杂配置,轻松玩转语音变声
  • 基于MATLAB的车牌识别系统开发与设计|含完整源码、技术报告及PPT演示
  • 《公安实战:如何实现“目标持续掌控”?》——从“看见目标”到“永不丢失”,空间智能的真实落地
  • 用STC89C52RC单片机DIY一个八路抢答器(附完整源码+PCB文件)
  • 告别信号毛刺!手把手教你为AD9910设计一个干净的数百兆赫兹输出滤波器
  • Go接口interface与鸭子类型
  • 《为什么90%的数字孪生都是假的?》——没有空间数据的“孪生”,只是一个会动的PPT
  • OpenClaw配置优化指南:提升Phi-3-vision-128k长文本处理效率
  • 拓朋N86车载台:畜牧运输的隐形守护者
  • 六相(双三相)永磁同步电机PMSM双闭环矢量控制仿真模型
  • Go Channel 死锁排查经验
  • 打通各大厂的AI工具信息孤岛:我写了一个本地化 AI 上下文同步引擎
  • OpCore-Simplify:5分钟极速配置黑苹果EFI的终极指南
  • 盘式电机Maxwell电磁仿真模型(双定单转24槽20极)代码功能说明
  • 【linux基础】小白超详细 Ubuntu 安装教程(AI提供)
  • 智慧农业智慧果园-葡萄成熟度检测数据集 用于葡萄成熟度分类检测应用任务 成熟、半成熟、未成熟三种状态的葡萄图像 YOLO数据集的训练及应用
  • VSCode
  • ngx_http_cmp_conf_addrs