竞赛讨论区 > 有没有大神能帮我看一下为啥c题只过了83%的样例
头像
wenyisir
发布于 2020-08-23 22:43
+ 关注

有没有大神能帮我看一下为啥c题只过了83%的样例

#include<queue>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
typedef pair<ll,ll>pll;
typedef pair<int,int>pii;

const int N = 1e5+10;

vector<int>res;
vector<int>q[55];//每个部门的人 
vector<int>p[10010];//每个人所属的部门 
queue<int>que;//最终感染的楼层 
int st[55];//记录楼层是否被标记;
int x,n,m;
void solve()
{
	for(int i=0;i<p[n].size();++i)
	{
		que.push(p[n][i]);
		st[p[n][i]]=1;
	}
	while(!que.empty())
	{
		int t=que.front();
		que.pop();
		for(int i=0;i<q[t].size();++i)
		{
			int a=q[t][i];
			for(int j=0;j<p[a].size();++j)
			{
				int pos=p[a][j];
				if(st[pos]==0)
				{
					que.push(pos);
					st[pos]=1;
				}
			}
		}
	}
} 

int main()
{
	cin>>x>>n>>m;
	for(int i=1;i<=m;++i)
	{
		int k;
		cin>>k;
		for(int j=1;j<=k;++j)
		{
			int kk;
			cin>>kk;
			q[i].push_back(kk);
			p[kk].push_back(i); 
		}
	}
	solve();

	for(int i=1;i<=m;++i)
		if(st[i]==1)
		{
			for(int j=0;j<q[i].size();++j)
				res.push_back(q[i][j]);	
		}
		
	sort(res.begin(),res.end());
	res.erase(unique(res.begin(),res.end()),res.end());
	
	cout<<res.size();
	for(int i=0;i<res.size();++i)
		cout<<" "<<res[i];
		
	return 0;
} 

全部评论

(1) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐