news 2026/6/14 13:30:19

题解:洛谷 P14552 [ROI 2013 Day1] 乌拉尔冰球赛

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
题解:洛谷 P14552 [ROI 2013 Day1] 乌拉尔冰球赛

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

洛谷:P14552 [ROI 2013 Day1] 乌拉尔冰球赛 - 洛谷

【题目描述】

为了普及冰球运动并提高乌拉尔地区冰球队的技术水平,组织了一场全乌拉尔锦标赛。锦标赛邀请了来自乌拉尔各城市的N NN支冰球队参加。

在前两轮比赛后,每支球队各进行了一场比赛,结果发现参赛队伍过多。锦标赛组织者决定只允许K KK支球队继续参赛,且这些球队中任意两支在前两轮比赛中均未相遇。

需要编写一个程序,找出满足条件的K KK支球队集合,或者输出无法实现的消息。如果存在多个符合条件的集合,只需找出其中任意一个。

【输入】

输入文件的第一行包含一个数字N NN2 ⩽ N ⩽ 100 , 000 2 \leqslant N \leqslant 100,0002N100,000N NN为偶数)。

随后的N NN行包含所有已进行比赛的描述。每场比赛的描述由两个不超过N NN的自然数组成——表示参加比赛的球队编号。
N / 2 N/2N/2行对应第一轮的比赛,其余行对应第二轮的比赛。

输入文件的最后一行包含一个数字K KK2 ⩽ K ⩽ N 2 \leqslant K \leqslant N2KN)。

保证每支球队恰好进行了两场比赛:一场在第一轮,一场在第二轮。

【输出】

输出文件应包含:如果无解,则仅输出一个数字0 00;否则输出K KK个不同的数字——所选球队的编号。

【输入样例】

6 1 2 3 5 4 6 2 3 4 5 1 6 3

【输出样例】

1 4 3

【核心思想】

  1. 问题分析:给定N NN支球队的比赛记录(每支球队进行两场比赛),需要选出K KK支球队,使得这K KK支球队中任意两支都没有比赛过。将比赛关系建模为图:球队为节点,比赛为边。问题转化为在图中选出K KK个互不相邻的节点(独立集)。由于每支球队恰好参加两场比赛,图由若干个环组成,是二分图。

  2. 算法选择

    • 二分图染色:使用 DFS 对图进行黑白染色,将节点分为两个集合
    • 贪心选择:选择较大的独立集(颜色数量较多的集合),从中取K KK个节点
  3. 关键步骤

    • 读入N NN支球队,构建无向图邻接表G GG
    • 读入目标数量K KK
    • 对每个未染色的连通块进行 DFS 染色:
      • 将起始节点染成红色(c o l o r = 1 color = 1color=1
      • 递归地将邻居染成相反颜色(黑色,c o l o r = − 1 color = -1color=1
      • 若发现邻居已染相同颜色,则不是二分图(本题保证是二分图)
    • 统计所有红色节点存入a n s ansans数组
    • ∣ a n s ∣ ≥ K |ans| \geq KansK,输出前K KK个红色节点;否则输出0 00
  4. 时间/空间复杂度

    • 时间复杂度:O ( N ) O(N)O(N),每个节点和边只被访问一次(总边数为N NN,因为每支球队两场比赛)
    • 空间复杂度:O ( N ) O(N)O(N),存储邻接表和颜色数组
  5. 二分图独立集的核心思想

    • 二分图性质:节点可分为两个集合,集合内部无边,所有边都连接两个集合
    • 独立集:同一颜色集合内的节点互不相邻,构成独立集
    • 最大独立集:选择两个颜色集合中较大的一个,即为最大独立集
    • 本题变体:只需找到大小至少为K KK的独立集,选择红色集合即可
    • 适用于匹配问题、资源分配、冲突避免等场景

【算法标签】

#普及 #二分图

【代码详解】

#include<bits/stdc++.h>// 包含所有标准库头文件usingnamespacestd;// 使用标准命名空间constintN=100010;// 定义最大节点数intn,k;// 节点数n,所需红色节点数kvector<int>G[N],ans;// 邻接表G存储图,ans存储所有红色节点intcolor[N];// 颜色数组,0表示未染色,1表示红色,-1表示黑色boolflag;// 是否为二分图的标志voiddfs(intx)// 深度优先搜索函数{if(color[x]==1)// 如果当前节点是红色ans.push_back(x);// 将红色节点加入答案数组for(inti=0;i<G[x].size();i++)// 遍历当前节点的所有邻居{inty=G[x][i];// 获取邻居节点if(color[x]==color[y])// 如果当前节点和邻居颜色相同{flag=false;// 不是二分图return;// 返回}if(color[y]==0)// 如果邻居节点未染色{color[y]=-color[x];// 将邻居染成相反颜色dfs(y);// 递归处理邻居节点}}}intmain()// 主函数{cin>>n;// 输入节点数for(inti=1;i<=n;i++)// 构建图的邻接表{intu,v;// 边的两个端点cin>>u>>v;// 输入边的信息G[v].push_back(u);// 添加无向边G[u].push_back(v);}cin>>k;// 输入需要输出的红色节点数量for(inti=1;i<=n;i++)// 遍历所有节点{if(color[i]==0)// 如果节点未染色{color[i]=1;// 染成红色dfs(i);// 从该节点开始深度优先搜索}}if(ans.size()>=k)// 如果红色节点数量满足要求{for(inti=0;i<k;i++)// 输出前k个红色节点cout<<ans[i]<<" ";// 输出红色节点cout<<endl;// 换行}else// 如果红色节点数量不足{cout<<0<<endl;// 输出0}return0;// 程序正常结束}

【运行结果】

6 1 2 3 5 4 6 2 3 4 5 1 6 3 1 3 4
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 13:30:09

免费3D重建软件Meshroom终极指南:从照片到专业模型的完整教程

免费3D重建软件Meshroom终极指南&#xff1a;从照片到专业模型的完整教程 【免费下载链接】Meshroom Node-based Visual Programming Toolbox 项目地址: https://gitcode.com/gh_mirrors/me/Meshroom 你是否曾想过&#xff0c;用手机拍摄的普通照片就能变成立体逼真的3D…

作者头像 李华
网站建设 2026/6/14 13:29:15

14800黄大年茶思屋“难题揭榜”第148期–EDA专题第四期 完整题目整理

“难题揭榜”第148期–EDA专题第四期 完整题目整理 通用信息 发布时间&#xff1a;2026-06-08浏览量&#xff1a;185次出题组织&#xff1a;半导体业务部、诺亚方舟实验室、马尔科夫实验室接口专家&#xff1a;伍宏忠、焦润、范明洲、许思源、刘安琪、黄宇、王涛、周恒毅、顾庆…

作者头像 李华
网站建设 2026/6/14 13:25:08

【课程设计/毕业设计】依托 SpringBoot 的企业数据资产统一登记服务系统设计【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/14 13:25:03

不止于rem:用cssrem插件探索vw适配与微信小程序rpx的实战技巧

不止于rem&#xff1a;用cssrem插件探索vw适配与微信小程序rpx的实战技巧在移动端适配的战场上&#xff0c;rem曾经是当之无愧的王者。但随着视口单位vw的成熟和微信小程序生态的崛起&#xff0c;前端开发者需要更灵活的适配方案。本文将带你突破rem的舒适区&#xff0c;探索vw…

作者头像 李华
网站建设 2026/6/14 13:24:05

MPC8245 PIC中断控制器:从硬件原理到驱动实战的深度解析

1. 项目概述与核心价值在嵌入式系统开发&#xff0c;尤其是涉及PowerPC架构的通信处理器时&#xff0c;中断管理是决定系统实时性、稳定性的基石。MPC8245作为一款经典的集成处理器&#xff0c;其内置的可编程中断控制器&#xff08;PIC&#xff09;单元&#xff0c;远不止是一…

作者头像 李华