???
查看原帖
???
765076
GAOSY楼主2023/8/22 09:56

哪里错了


#include <bits/stdc++.h>
using namespace std;
int n,m,q,x,y,f1[100010],f2[100010];
vector<int >edge[100010];
int bfs(){
    queue<pair<int,int> >q;
    for(int i=0;i<edge[1].size();i++){
        f1[edge[1][i]]=1;
        q.push(make_pair(edge[1][i],1));
    }
    while(q.size()){
        int u=q.front().first,v=q.front().second;
        q.pop();
        for(int i=0;i<edge[u].size();i++)
            if(v%2==1)
                if(v+1<f2[edge[u][i]]){
                    f2[edge[u][i]]=v+1;
                    q.push(make_pair(edge[u][i],v+1));
                }
            else
                if(v+1<f1[edge[u][i]]){
                    f1[edge[u][i]]=v+1;
                    q.push(make_pair(edge[u][i],v+1));
                }
    }
}
int main(){
    memset(f1,0x7f7f7f7f,sizeof(f1));
    memset(f2,0x7f7f7f7f,sizeof(f2));
    cin>>n>>m>>q;
    for(int i=1;i<=m;i++){
        cin>>x>>y;
        edge[x].push_back(y);
        edge[y].push_back(x);
    }
    bfs();
    while(q--){
        cin>>x>>y;
        if(y%2==0)
            if(f2[x]>y)
                cout<<"No"<<endl;
            else 
                cout<<"Yes"<<endl;
        else
            if(f1[x]>y)
                cout<<"No"<<endl;
            else
                cout<<"Yes"<<endl;
    }
}

哪里错了???

2023/8/22 09:56
加载中...