简单模拟水题求助
  • 板块学术版
  • 楼主_QrSn_
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/10/13 13:11
  • 上次更新2023/10/27 07:42:08
查看原帖
简单模拟水题求助
511253
_QrSn_楼主2022/10/13 13:11
题目描述
      同学们应该学会多交一些好朋友。朋友关系是相互的, A 是 B 的好朋友,则 B 也是 A的好朋友。朋友关系是不传递的, A 是 B 的好朋友, B 是 C 的好朋友,但 A 和 C 不一定是好朋友。现在给出某小学部分同学之间的朋友关系,请编程统计朋友最多的人有多少个好朋友。 2≤n≤100,1≤m≤1000
输入
输入共 m+1 行。
第 1 行是两个整数 n 和 m,分别表示同学总人数和朋友关系对数。
第 2 行到第 m+1 行,描述了 m 对朋友关系。每行两个用单个空格隔开的同学姓名。
每个人的姓名仅由小写字母组成,且 1≤姓名的长度≤10。
输出
一个整数,表示朋友最多的人有多少个好朋友。
样例输入
4 3
lucy lily
jam lily
jam peter
样例输出
2

代码:

#include<bits/stdc++.h>
using namespace std;
struct stu
{
      string name;
      int number;   
}a[101];
int n,m,sum=0,ans,ans2;
string peo[101];
bool find(string y)
{
     for(int i=0;i<=sum;i++)
     {
        if(a[i].name==y){ans=i;return false;}
     }
     return true;
}
bool fide(string y)
{
     for(int i=0;i<=sum;i++)
     {
        if(peo[i]==y){return false;}
     }
     return true;
}
bool cmp(stu x,stu y)
{
    return x.number>y.number; 
} 
int main(){
    cin>>n>>m;
    for(int i=0;i<m;i++)
    {
        ans=0;
        string b,c;
        cin>>b>>c;
        if(!fide(b+c) || !fide(c+b))continue;
        else  peo[ans]=b+c,ans++;
        if(find(b))
        {
           a[sum].name=b;
           a[sum].number++;
           sum++;   
        }
        else a[ans].number++;
        ans=0;
        if(find(c))
        {
           a[sum].name=c;
           a[sum].number++;
           sum++;   
        }
        else a[ans].number++;
    }
    sort(a,a+n,cmp);
    cout<<a[0].number;
    return 0;
} 

WA51分,就是找不出哪里错

2022/10/13 13:11
加载中...