社区讨论

求助!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 条回复,欢迎继续交流。

正在加载回复...