1 条题解

  • 1
    @ 2026-9-5 20:12:01
    #include <vector>
    #include <queue>
    #include <cstring>
    using namespace std;
    const int MAXN = 100005;
    const int INF = 0x3f3f3f3f;
    
    vector<int> G[MAXN];
    int dis0[MAXN]; //到u最短偶数步
    int dis1[MAXN]; //到u最短奇数步
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int n, m, q;
        cin >> n >> m >> q;
        for(int i = 0; i < m; ++i)
        {
            int u, v;
            cin >> u >> v;
            G[u].push_back(v);
            G[v].push_back(u);
        }
        memset(dis0, 0x3f, sizeof dis0);
        memset(dis1, 0x3f, sizeof dis1);
        queue<pair<int,int>> qb;
        dis0[1] = 0;
        qb.push({1,0});
    
        while(!qb.empty())
        {
            auto cur = qb.front(); qb.pop();
            int u = cur.first;
            int s = cur.second; //0偶 1奇
            int d = (s ==0) ? dis0[u] : dis1[u];
            for(int v : G[u])
            {
                int ns = 1 - s;
                if(ns == 0)
                {
                    if(dis0[v] > d + 1)
                    {
                        dis0[v] = d + 1;
                        qb.push({v,0});
                    }
                }
                else
                {
                    if(dis1[v] > d + 1)
                    {
                        dis1[v] = d + 1;
                        qb.push({v,1});
                    }
                }
            }
        }
    
        while(q--)
        {
            int a, L;
            cin >> a >> L;
            bool ok = false;
            if(L %2 ==1)
            {
                if(dis1[a] != INF && dis1[a] <= L) ok = true;
            }
            else
            {
                if(dis0[a] != INF && dis0[a] <= L) ok = true;
            }
            if(ok) cout << "Yes\n";
            else cout << "No\n";
        }
        return 0;
    }
    
    
    
    • 1

    信息

    ID
    788
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    205
    已通过
    8
    上传者