90pts求助
查看原帖
90pts求助
648843
wdl_楼主2022/3/16 08:17

WA #18和#20两个点

#include<bits/stdc++.h>
using namespace std;
int js=0,js2[100005],list1[100005][2]={{},{1,0}},ans1[100005],ans2[100005],i=0,j=1,n,m,q,ui,vi,a,l;
struct node
{
    int u,v,next=0;
}s[200010];
void lianjie(int x,int y)
{
    s[++js].u=x;
    s[js].v=y;
    s[js].next=js2[x];
    js2[x]=js;
}
void bfs()
{
    for(int i=0;i<=n;i++)ans1[i]=ans2[i]=1e9;
    while(i<j)
    {
        i++;
        js=js2[list1[i][0]];
        while(js!=0)
        {
            list1[++j][0]=s[js].v;
            list1[j][1]=list1[i][1]+1;
            if((ans1[s[js].v]!=1e9&&list1[j][1]%2==0)||(ans2[s[js].v]!=1e9&&list1[j][1]%2==1))j--;
            else
            {
                if(list1[j][1]%2==0)
                    ans1[s[js].v]=list1[j][1];
                else
                    ans2[s[js].v]=list1[j][1];
            }
            js=s[js].next;
        }
    }
}
int main()
{
    cin>>n>>m>>q;
    for(int k=0;k<m;k++)
    {
        cin>>ui>>vi;
        lianjie(ui,vi);
        lianjie(vi,ui);
    }
    bfs();
    for(int k=0;k<q;k++)
    {
        cin>>a>>l;
        if((l%2==0&&l>=ans1[a])||(l%2==1&&l>=ans2[a]))
        	cout<<"Yes"<<endl;
        else
        	cout<<"No"<<endl;
    };
}
2022/3/16 08:17
加载中...