标签:[] main 自己的 数据 bit 应该 输入 lock cpp
【题面】
同学们应该学会多交一些好朋友。朋友关系是相互的,A 是B 的好朋友,则B 也是A的好朋友。朋友关系是不传递的,A 是B 的好朋友,B 是C 的好朋友,但A 和C不一定是好朋友。现在给出某小学部分同学之间的朋友关系,请编程统计朋友最多的人有多少个好朋友。
【样式输入】
4 3
lucy lily
jam lily
jam peter
【样式输出】
2
#include<bits/stdc++.h>//文件操作用万能库,否则加cstdio
using namespace std;
int pos=0;//已有姓名的数量
string s[110];
int work(string x){
for(int i=1;i<=pos;i++){
if(x==s[i])
return i;//处理重复姓名,如姓名重复,则return返回其的下标,如s[1]中下标“1”,并在主程序中处理下标
}
s[pos]=x;
pos++;
return pos-1;
}
int main(){
freopen("friend.in","r",stdin);
freopen("friend.out","w",stdout);
int n,m,a[110],f[110][110];
string s1,s2;
memset(a,0,sizeof(a));//将a[]数组全部清零
memset(f,0,sizeof(f)); //将f[]数组全部清零
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>s1>>s2;
int k1=work(s1);//这个变量是s1在s中的下标是多少
int k2=work(s2); //这个变量是s2在s中的下标是多少
if(f[k1][k2]==0&&f[k2][k1]==0){//如果f[][]为零,则这对朋友之间的关系,没有在f[][]中记录,就将其记录一次
a[k1]++;
a[k2]++;
f[k1][k2]=1; //标记朋友关系是否记录
f[k2][k1]=1;
}
}
int ans=-1;
for(int i=1;i<=n;i++){
if(a[i]>ans)
ans=a[i];
}
cout<<ans<<endl;//输出朋友数最多的人所拥有的朋友的数量
return 0;
}
标签:[] main 自己的 数据 bit 应该 输入 lock cpp
原文地址:https://www.cnblogs.com/Forever-chen/p/9690914.html