贤人请进
  • 板块灌水区
  • 楼主WA_Coding_Duck
  • 当前回复14
  • 已保存回复14
  • 发布时间2023/10/15 18:58
  • 上次更新2023/11/2 13:35:41
查看原帖
贤人请进
936003
WA_Coding_Duck楼主2023/10/15 18:58
#include <bits/stdc++.h>
#define rep(i,l,r) for(int i=l;i<=r;++i)

using namespace std;

const int N=1e5+24;

int n,m,qq;
vector<int> linker[N]; 
int disj[N],diso[N];

struct Node{
    int u,dis;
};
list<Node> q;

void bfs()
{
    rep(i,1,n)
        disj[n]=0x3f3f3f3f,
        diso[n]=0x3f3f3f3f;
    for(auto i:linker[1])
    {
        disj[i]=1;
        q.push_back((Node){i,1});
    }
    while(!q.empty())
    {
        int u=q.front().u,dis=q.front().dis;
        q.pop_front();
        for(auto v:linker[u])
        {
            if((dis&1)&&(dis+1<diso[v]))
            {
                diso[v]=dis+1;
                q.push_back((Node){v,dis+1});
            }
            else if(dis+1<disj[v])
            {
                    disj[v]=dis+1; 
                    q.push_back((Node){v,dis+1});
            }
        }
    }
}

signed main()
{
    cin>>n>>m>>qq;
    rep(i,1,m){
        int u,v;
        cin>>u>>v;
        linker[u].push_back(v);
        linker[v].push_back(u);
    }
    bfs();
    while(qq--){
        int a,l;
        cin>>a>>l;
        if(l&1){
            if(disj[a]>l)
                cout<<"No"<<endl;
            else
                cout<<"Yes"<<endl;
        }
        else{
            if(diso[a]>l)
                cout<<"No"<<endl;
            else
                cout<<"Yes"<<endl;
        }
    }
}

https://www.luogu.com.cn/problem/P5663

2023/10/15 18:58
加载中...