QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#720783 | #6679. Not Another Path Query Problem | KowerKoint# | Compile Error | / | / | Python3 | 1.6kb | 2024-11-07 14:05:19 | 2024-11-07 14:05:19 |
Judging History
This is the latest submission verdict.
- [2024-11-07 14:05:19]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2024-11-07 14:05:19]
- 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 = 0LL;
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 53 ll base = 0LL; ^ SyntaxError: invalid decimal literal