社区讨论
求助!6点黑了!!!!!!!
P1551亲戚参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lo1sooic
- 此快照首次捕获于
- 2023/10/23 02:21 2 年前
- 此快照最后确认于
- 2023/11/03 02:57 2 年前
我这40分样例过了怎么回事啊
CPP#include <bits/stdc++.h>
using namespace std;
vector<int> ve[5100];
int n,m,p;
vector<int> operator +(vector<int> a,vector<int> b)
{
int l1=a.size(),l2=b.size();
vector<int> c={};
map<int,bool> cnt;
for(int i=0;i<l1;i++)
{
if(cnt[a[i]]==0)
{
cnt[a[i]]=1;
c.push_back(a[i]);
}
}
for(int j=0;j<l2;j++)
{
if(cnt[b[j]]==0)
{
cnt[b[j]]=1;
c.push_back(b[j]);
}
}
return c;
}//每个vector存储每个人的亲戚,亲戚有传递性,所以需要合并
//两个vector
signed main()
{
cin>>n>>m>>p;
for(int i=1;i<=m;i++)
{
int m1,m2;
scanf("%d%d",&m1,&m2);//类似邻接表存储
ve[m1].push_back(m2);
ve[m2].push_back(m1);
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<ve[i].size();j++)
{
ve[i]=ve[i]+ve[ve[i][j]];//合并
}
}
for(int i=1;i<=p;i++)
{
int p1,p2;
scanf("%d%d",&p1,&p2);
//查找ve[p1]中有没有p2,有输出Yes,没有输出No.
vector<int>::iterator it=find(ve[p1].begin(),ve[p1].end(),p2);
if(it==ve[p1].end())
{
cout<<"No";
}
else
{
cout<<"Yes";
}
cout<<"\n";
}
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...