1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int n,m,query; int head[100011],ver[200011],Next[200011],tot=-1; int dist[100011][2]; queue<pair<int,int> >Q; void ADD(int x,int y){ ver[++tot]=y; Next[tot]=head[x]; head[x]=tot; } void bfs(){ int x,y,t; memset(dist,0x3f,sizeof(dist)); Q.push(make_pair(1,0)); dist[1][0]=0; while(Q.size()){ int x=Q.front().first,t=Q.front().second; Q.pop(); for(int i=head[x];~i;i=Next[i]){ y=ver[i]; if (dist[y][t^1]>dist[x][t]+1){ dist[y][t^1]=dist[x][t]+1; Q.push(make_pair(y,t^1)); } } } } int main(){ int x,y; cin>>n>>m>>query; memset(head,-1,sizeof(head)); for(int i=1;i<=m;i++){ cin>>x>>y; ADD(x,y); ADD(y,x); } bfs(); while(query--){ int A,B; cin>>A>>B; if(A==1&&head[1]==-1) cout<<"Yes"<<endl; else if(dist[A][B&1]<=B) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }
信息
- ID
- 66
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 6
- 已通过
- 6
- 上传者