Pta题目集:帅到没朋友 (20 分)

7-7 帅到没朋友 (20 分)

当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。

输入格式:

输入第一行给出一个正整数N(≤100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(≤1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(≤10000),为待查询的人数;随后一行中列出M个待查询的ID,以空格分隔。

注意:没有朋友的人可以是根本没安装“朋友圈”,也可以是只有自己一个人在朋友圈的人。虽然有个别自恋狂会自己把自己反复加进朋友圈,但题目保证所有K超过1的朋友圈里都至少有2个不同的人。

输出格式:

按输入的顺序输出那些帅到没朋友的人。ID间用1个空格分隔,行的首尾不得有多余空格。如果没有人太帅,则输出No one is handsome

注意:同一个人可以被查询多次,但只输出一次。

输入样例1:

3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
8
55555 44444 10000 88888 22222 11111 23333 88888

输出样例1:

10000 88888 23333

输入样例2:

3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
4
55555 44444 22222 
### PTA 7-82 朋友 解题思路 对于这个问题,核心在于理解朋友圈的概念以及如何通过给定的数据来判断一个人是否有朋友。根据描述,如果一个朋友圈里只有一个人,那么这个人是朋友的;而如果有超过一个人的朋友圈,则说明这些人都至少有一个朋友。 #### 数据结构设计 为了处理这种关系网络问题,可以考虑使用图论中的邻接表表示法。每个人作为一个节点,若有两个人之间存在友谊关系则在两者间建立一条边。这样就可以方便地遍历整个社交网络并统计每个节点(即个人)所连接的其他节点数量。 #### 输入解析 输入部提供了多组测试数据,每组先给出总人数`n`和好友关系数目`m`,接着是具体的两两之间的友好关联信息。因此,在读取时需特别留意边界条件,比如当有任何友好的情况下也要能够正确输出结果。 #### 主要逻辑实现 针对上述析,解决方案可概括为以下几个方面: 1. **初始化**:创建一个大小为`n+1`的一维数组用于记录各人的朋友计数值; 2. **构建关系网**:依据输入逐步更新每位成员的好友列表长度; 3. **判定孤独者**:遍历所有人,找出那些其对应位置上的值仍保持初始状态未被改变过的个体——这表明他们确实孤单一人; 4. **特殊情形考量**:考虑到可能存在完全孤立的情况,也就是有人有任何形式的社会联系,此时应单独处理以确保不会遗漏任何情况。 下面是基于以上讨论的一个可能的 C++ 实现方案: ```cpp #include <iostream> using namespace std; int main(){ int n, m; cin >> n >> m; bool hasFriend[n + 1] = {false}; // 初始化所有人都有标记 for (int i = 0; i < m; ++i){ int personA, personB; cin >> personA >> personB; hasFriend[personA] = true; if(personA != personB){ // 防止自环影响最终结果 hasFriend[personB] = true; } } int lonelyCount = 0; for(int j=1;j<=n;++j){ if(!hasFriend[j]){ cout << j << " "; lonelyCount++; } } if(lonelyCount==0){ printf("Everyone has friends\n"); }else{ cout<<endl; } } ``` 此代码片段实现了对“朋友”的解答过程,并且遵循了良好的编程实践标准[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值