比赛 2026.5.16 评测结果 AWAAAAAAAAAAEEEEEEEE
题目名称 不是一道路径查询问题 最终得分 55
用户昵称 LikableP 运行时间 1.270 s
代码语言 C++ 内存使用 3.55 MiB
提交时间 2026-05-16 12:00:58
显示代码纯文本
#include <cstdio>
#include <cctype>
#include <iostream>
typedef long long ll;

template <typename T> T read() {
  T res = 0, f = 1;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar()) if (ch == '-') f = -1;
  for (; isdigit(ch); ch = getchar()) res = (res << 3) + (res << 1) + (ch ^ 48);
  return res * f;
}

const int MAXN = 110;

int n, m, q;
ll V;
ll dis[MAXN][MAXN];

int main() {
  freopen("Paths.in", "r", stdin);
  freopen("Paths.out", "w", stdout);
  n = read<int>(), m = read<int>(), q = read<int>(), V = read<ll>();
  for (int i = 1; i <= m; ++i) {
    int u = read<int>(), v = read<int>(); ll w = read<ll>();
    dis[u][v] = dis[v][u] = w;
  }
  
  for (int k = 1; k <= n; ++k) {
    for (int i = 1; i <= n; ++i) {
      for (int j = 1; j <= n; ++j) {
        if (dis[i][k] && dis[k][j]) {
          if ((dis[i][k] & dis[k][j]) > dis[i][j]) {
            dis[i][j] = dis[i][k] & dis[k][j];
          }
        }
      }
    }
  }
  
  while (q--) {
    int u = read<int>(), v = read<int>();
    puts(dis[u][v] >= V ? "Yes" : "No");
  }
  return 0;
}