建议降黄
查看原帖
建议降黄
938645
zhaodexuan20121211楼主2024/10/5 18:53

rt,太简单了

#include<bits/stdc++.h>
using namespace std;
vector<long long>g[100005];
long long n,m,q,a,l,dis[100005],diss[100005],u,v;
void bfs()
{
	memset(dis,0x3f,sizeof(dis));
	memset(diss,0x3f,sizeof(diss));
	diss[1] = 0;
	queue<long long>q;
	q.push(1);
	while(q.size())
	{
		long long f=q.front();
		q.pop();
		for(auto i:g[f])
		{
			//cout<<1<<endl;
			if(diss[i]>dis[f]+1||dis[i]>diss[f]+1)
			{
				diss[i] = min(diss[i],dis[f]+1);
				dis[i] = min(dis[i],diss[f]+1);
				q.push(i);
			}
		}
	}
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m>>q;
	for(int i=1;i<=m;i++)
	{
		cin>>u>>v;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	bfs();
	for(int i=1;i<=q;i++)
	{
		cin>>a>>l;
		if((dis[a]!=0x3f3f3f3f3f3f3f3f&&(dis[a]-l)%2==0&&dis[a]<=l)||(diss[a]!=0x3f3f3f3f3f3f3f3f&&(diss[a]-l)%2==0&&diss[a]<=l))
		{
			cout<<"Yes";
		}
		else
		{
			cout<<"No";
		}
		cout<<endl;
	}
    return 0;
}

不喜勿喷

2024/10/5 18:53
加载中...