Submission #25345063
Source Code Expand
#include "bits/stdc++.h"
#define int long long
using namespace std;
using ll = long long;
using ld = long double;
using P = pair<ll, ll>;
const ll INF = (1LL << 61);
ll mod = 1000000007;
struct UnionFind {
vector<int>par, vsize, esize;
UnionFind(int sz_) : par(sz_), vsize(sz_, 1), esize(sz_, 0) {
for (int i = 0; i < sz_; i++)par[i] = i;
}
void init(int sz_) {
par.resize(sz_);
vsize.resize(sz_, 1);
esize.resize(sz_, 0);
for (int i = 0; i < sz_; i++)par[i] = i;
}
int root(int x) {
if (par[x] == x)return x;
else return par[x] = root(par[x]);
}
bool merge(int x, int y) {
x = root(x), y = root(y);
if (x == y) {
esize[x]++;
return false;
}
if (vsize[x] < vsize[y])swap(x, y);
vsize[x] += vsize[y];
esize[x] += esize[y] + 1;
par[y] = x;
return true;
}
bool issame(int x, int y) {
return root(x) == root(y);
}
int vs(int x) {
return vsize[root(x)];
}
int es(int x) {
return esize[root(x)];
}
};
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
int N, Q; cin >> N >> Q;
UnionFind uf(N);
vector<int>T(Q), X(Q), Y(Q), V(Q);
vector<int>t(N);
for (int i = 0; i < Q; i++) {
cin >> T[i] >> X[i] >> Y[i] >> V[i];
X[i]--; Y[i]--;
if (T[i] == 0) {
t[X[i]] = V[i];
}
}
vector<int>res(N + 1, 0);
for (int i = 0; i < N; i++) {
res[i + 1] = t[i] - res[i];
}
for (int i = 0; i < Q; i++) {
if (T[i] == 0)uf.merge(X[i], Y[i]);
else {
if (!uf.issame(X[i], Y[i])) {
cout << "Ambiguous" << endl;
}
else {
if (X[i] % 2 == Y[i] % 2) {
cout << V[i] + (res[Y[i]] - res[X[i]]) << endl;
}
else {
cout << (res[X[i]] + res[Y[i]]) - V[i] << endl;
}
}
}
}
return 0;
}
Submission Info
Submission Time |
|
Task |
068 - Paired Information(★5) |
User |
Example |
Language |
C++ (GCC 9.2.1) |
Score |
5 |
Code Size |
1768 Byte |
Status |
AC |
Exec Time |
113 ms |
Memory |
10208 KiB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
5 / 5 |
Status |
|
|
Set Name |
Test Cases |
Sample |
00_sample_0.txt, 00_sample_1.txt |
All |
00_sample_0.txt, 00_sample_1.txt, 01_random_0.txt, 01_random_1.txt, 01_random_2.txt, 01_random_3.txt, 01_random_4.txt, 01_random_5.txt, 01_random_6.txt, 01_random_7.txt, 02_maxima_0.txt, 02_maxima_1.txt, 02_maxima_2.txt |
Case Name |
Status |
Exec Time |
Memory |
00_sample_0.txt |
AC |
6 ms |
3596 KiB |
00_sample_1.txt |
AC |
2 ms |
3544 KiB |
01_random_0.txt |
AC |
58 ms |
9952 KiB |
01_random_1.txt |
AC |
83 ms |
9084 KiB |
01_random_2.txt |
AC |
81 ms |
8924 KiB |
01_random_3.txt |
AC |
113 ms |
7864 KiB |
01_random_4.txt |
AC |
64 ms |
7496 KiB |
01_random_5.txt |
AC |
63 ms |
7336 KiB |
01_random_6.txt |
AC |
52 ms |
8968 KiB |
01_random_7.txt |
AC |
112 ms |
7576 KiB |
02_maxima_0.txt |
AC |
62 ms |
10188 KiB |
02_maxima_1.txt |
AC |
59 ms |
10208 KiB |
02_maxima_2.txt |
AC |
78 ms |
8984 KiB |