P5663 [CSP-J2019] 加工零件

原题链接

题解

请仔细读题!!!

如果1号工人需要提供原材料,那么代表 ai1 存在一条长度为 Li 的路径(可以重复走)

由于重复走不会改变路径长度的奇偶性,所以一定存在一条奇偶性相同,且长度小于 Li 的路径,所以只要求从点1出发到各个点奇偶最短路即可

code

#include<bits/stdc++.h>
using namespace std;
vector<int> G[100005];

struct fresh
{
    int pos,val;
    bool operator<(const fresh &b) const{return b.val<val;}
};

int dis[100005][2];

int main()
{
    memset(dis,0x3f,sizeof dis);
    int n,m,Q;
    cin>>n>>m>>Q;

    for(int i=1;i<=m;i++)
    {
        int x,y;
        cin>>x>>y;

        G[x].push_back(y);
        G[y].push_back(x);
    }

    priority_queue<fresh> q;
    q.push({1,0});

    while(q.size())
    {
        int now=q.top().pos,val=q.top().val,id=(val&1);
        q.pop();
        if(dis[now][id]<=val) continue;
        dis[now][id]=val;
        for(auto next:G[now])
        {
            if(dis[next][1-id]>val+1)
            {
                q.push({next,val+1});
            }
        }
    }

    while(Q--)
    {
        int a,l;
        cin>>a>>l;

        if(dis[a][l&1]<=l) puts("Yes");
        else puts("No");
    }
    return 0;
}

posted @   纯粹的  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示