比赛 2026.5.16 评测结果 AAAWAAAAAAAAWWWATTTT
题目名称 不是一道路径查询问题 最终得分 60
用户昵称 Ruyi 运行时间 6.910 s
代码语言 C++ 内存使用 29.64 MiB
提交时间 2026-05-16 09:50:18
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
#define N 500001
using namespace std;
ll n,m,q,v,x,y,z,fa[N];
struct edge{ll u,v,w;}e[N];
struct ask{
    ll u,v;
    string ans="No";
}a[N];
ll find(ll num){
    if(num==fa[num]) return num;
    return fa[num]=find(fa[num]);
}
void solve(ll num){
    for(int i=1;i<=n;i++) fa[i]=i;
    for(int i=1;i<=m;i++)
    if((e[i].w&num)==num) fa[find(e[i].u)]=find(e[i].v);
    for(int i=1;i<=q;i++)
    if(find(a[i].u)==find(a[i].v)) a[i].ans="Yes";
    return ;
}
int main(){
    freopen("Paths.in","r",stdin);
    freopen("Paths.out","w",stdout);
    cin>>n>>m>>q>>v;
    for(int i=1;i<=m;i++) cin>>e[i].u>>e[i].v>>e[i].w;
    for(int i=1;i<=q;i++) cin>>a[i].u>>a[i].v;
    solve(v);
    for(int i=0;i<60;i++)
    if(((1<<i)&v)==0) solve(((v>>i)+1)<<i);
    for(int i=1;i<=q;i++) cout<<a[i].ans<<endl;
    return 0;
}