QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#720787#6679. Not Another Path Query ProblemKowerKoint#Compile Error//Python31.6kb2024-11-07 14:06:032024-11-07 14:06:03

Judging History

This is the latest submission verdict.

  • [2024-11-07 14:06:03]
  • Judged
  • [2024-11-07 14:06:03]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int N, M, Q;
ll V;

int A[500000], B[500000];
ll W[500000];

struct UnionFind {
  vector<int> par;
  vector<int> siz;

  void init(int N) {
    par.resize(N);
    siz.resize(N);
    for (int i = 0; i < N; i++) {
      par[i] = i;
      siz[i] = 1;
    }
  }

  int root(int a) {
    if (par[a] == a) return a;
    return par[a] = root(par[a]);
  }

  void unite(int a, int b) {
    int rootA = root(a);
    int rootB = root(b);
    if (rootA == rootB) return;
    if (siz[rootA] < siz[rootB]) swap(rootA, rootB);
    par[rootB] = rootA;
    siz[rootA] += siz[rootB];
  }

  bool same(int a, int b) {
    return root(a) == root(b);
  }
};

UnionFind uf[60];

int main() {
  cin >> N >> M >> Q >> V;
  for (int i = 0; i < M; i++) {
    cin >> A[i] >> B[i] >> W[i];
    A[i]--;
    B[i]--;
  }

  ll base = 0;
  for (int i = 59; i >= 0; i--) {
    uf[i].init(N);
    if (i == 0) {
      for (int j = 0; j < M; j++) {
        if ((W[j] & (base | (V & 1LL))) == (base | (V & 1LL))) {
          uf[i].unite(A[j], B[j]);
        }
      }
    } else if (((V >> i) & 1LL) == 0) {
      for (int j = 0; j < M; j++) {
        if ((W[j] & (base | (1LL << i))) == (base | (1LL << i))) {
          uf[i].unite(A[j], B[j]);
        }
      }
    } else {
      base |= (1LL << i);
    }
  }

  for (int i = 0; i < Q; i++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    bool ans = false;
    for (int j = 0; j < 60; j++) {
      ans |= uf[j].same(a, b);
    }
    cout << (ans ? "Yes" : "No") << endl;
  }
}

詳細信息

  File "answer.code", line 58
    if ((W[j] & (base | (V & 1LL))) == (base | (V & 1LL))) {
                             ^
SyntaxError: invalid decimal literal