热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

A1166峰会区域安排问题(25分)PAT甲级C++满分解析【图论】

峰会是指国家元首或政府首脑之间的会议。合理安排峰会的休息区是一项复杂的工作,理想的情况是邀请的每位领导人都是彼此的直接朋友。

在峰会上,峰会是指国家元首或政府首脑之间的会议。为了确保会议顺利进行,需要精心规划休息区的安排,使每个区域内的所有领导人都能相互认识且互为直接朋友。


给定一系列可能的休息区安排方案,您的任务是评估每个方案是否满足上述理想条件。



输入描述:


每个输入文件包含一个测试用例。每个用例的第一行给出两个正整数N (≤ 200),表示参加峰会的领导人数量,以及M,表示友谊关系的数量。接下来的M行每行包含一对数字,表示两位相互友好的领导人的编号。领导人从1至N编号。


随后是一个正整数K (≤ 100),表示有K种不同的休息区安排方案。接下来的K行每行首先给出一个正整数L (≤ N),然后是L个不同的领导人编号,表示一个可能的休息区安排方案。同一行中的所有数字由空格分隔。



输出描述:


对于每个休息区,按照以下格式输出您的建议:



  • 如果在这个区域内每个人都直接是其他人的朋友,并且没有遗漏的朋友(即没有其他人与这个区域内的所有人都直接友好),则输出Area X is OK.

  • 如果在这个区域内每个人都直接是其他人的朋友,但还有其他领导人也可以被邀请而不破坏理想的安排,则输出Area X may invite more people, such as H.,其中H是最小编号的可邀请领导人。

  • 如果这个区域的安排不是理想的,则输出Area X needs help.,以便主办方可以提供特别服务帮助领导人相互了解。


这里的X是从1到K的区域索引。



示例输入:


8 10
5 6
7 8
6 4
3 6
4 5
2 3
8 2
2 7
5 3
3 4
6
4 5 4 3 6
3 2 8 7
2 2 3
1 1
2 4 6
3 3 2 1


示例输出:


Area 1 is OK.
Area 2 is OK.
Area 3 is OK.
Area 4 is OK.
Area 5 may invite more people, such as 3.
Area 6 needs help.


参考代码:


#include 
#include
using namespace std;

vector> edge(250, vector(250, 0));

int main() {
int n, m;
cin >> n >> m; // n个节点m条边
for (int i = 0; i int x, y;
cin >> x >> y;
edge[x][y] = edge[y][x] = 1; // 建立图的连接
}
int k;
cin >> k;
for (int i = 1; i <= k; i++) {
int l; // 每个area的点的个数
cin >> l;
vector v(l);
for (int j = 0; j cin >> v[j];
bool flag1 = true;
for (int j = 0; j for (int k = j + 1; k if (edge[v[j]][v[k]] == 0) {
flag1 = false;
break;
}
}
if (!flag1) break;
}
bool flag2 = false;
int minn = -1;
for (int j = 1; j <= n; j++) {
int k;
for (k = 0; k if (j == v[k]) break;
if (j != v[k] && edge[j][v[k]] == 0) break;
}
if (k == l) {
flag2 = true;
minn = j;
break;
}
}
if (!flag1) printf("Area %d needs help.\n", i);
else if (flag2) printf("Area %d may invite more people, such as %d.\n", i, minn);
else printf("Area %d is OK.\n", i);
}
return 0;
}


运行结果:



推荐阅读
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • ImmutableX Poised to Pioneer Web3 Gaming Revolution
    ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
author-avatar
人丁红星
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有