wow 本题目第一个题解欸
2025-09-10 20:46:18
发布于:北京
6阅读
0回复
0点赞
核心思路:bfs找到1号点奇数距离的最小值和偶数距离的最小值
然后根据情况输出就行
#include <bits/stdc++.h>
using namespace std;
int n,m,q,o[100010],e[100010];
vector <int> ve[100010];
void bfs(){
queue <int> q;
q.push(1);
e[1]=0;
while(q.size()){
int u=q.front();
q.pop();
for(int i=0;i<ve[u].size();i++){
int v=ve[u][i];
if(e[u]+1<o[v]){
o[v]=e[u]+1;
q.push(v);
}
if(o[u]+1<e[v]){
e[v]=o[u]+1;
q.push(v);
}
}
}
}
int main(){
cin>>n>>m>>q;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
ve[u].push_back(v);
ve[v].push_back(u);
}
memset(o,0x3f,sizeof(o));
memset(e,0x3f,sizeof(e));
bfs();
while(q--){
int a,l;
cin>>a>>l;
if(l%2==1&&o[a]<=l||l%2==0&&e[a]<=l) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
全部评论 2
ddd大佬就是有思路太强了
2025-09-10 来自 北京
0ddd
2025-09-10 来自 北京
0
有帮助,赞一个