Submission #2561451
Source Code Expand
#include <iostream>
#include <vector>
#include <memory>
using namespace std;
struct UnionFindPOL {
vector<int> data;
vector<int> position;
vector<int> offset;
UnionFindPOL(int size) : data(size, -1), position(size, 0), offset(size, 0) {
}
bool unionSet(int x, int y) {
x = root(x); y = root(y);
if (x != y) {
if (data[y] < data[x]) swap(x, y);
data[x] += data[y]; data[y] = x;
}
return x != y;
}
bool addDist(int l, int r, int d) {
int rl = root(l);
int rr = root(r);
if(rl == rr) {
int posl = getPosition(l);
int posr = getPosition(r);
if(posr - posl == d) {
return true;
} else {
return false;
}
} else {
if(data[rl] < data[rr]) {
int offsetr = position[l] + d - position[r];
if(data[rr] == -1) {
position[rr] = offsetr;
} else {
offset[rr] = offsetr;
}
data[rl] += data[rr];
data[rr] = rl;
} else {
int offsetl = position[r] - d - position[l];
if(data[rl] == -1) {
position[rl] = offsetl;
} else {
offset[rl] = offsetl;
}
data[rr] += data[rl];
data[rl] = rr;
}
return true;
}
}
int getPosition(int x) {
int pos = position[x];
int p = x;
while(p >= 0) {
pos += offset[p];
p = data[p];
}
return pos;
}
bool findSet(int x, int y) {
return root(x) == root(y);
}
int root(int x) {
//return data[x] < 0 ? x : data[x] = root(data[x]);
if(data[x] < 0) {
return x;
} else {
//position[x] = getPosition(x);
//return (data[x] = root(data[x]));
return root(data[x]);
}
}
int size(int x) {
return -data[root(x)];
}
};
int main() {
int N, M;
cin >> N >> M;
UnionFindPOL ufpol(N+1);
for(int i=0; i<M; i++) {
int l, r, d;
cin >> l >> r >> d;
if(ufpol.addDist(l, r, d) == false) {
cout << "No" << endl;
return 0;
}
}
cout << "Yes" << endl;
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - People on a Line |
| User | hogeki |
| Language | C++14 (GCC 5.4.1) |
| Score | 0 |
| Code Size | 2364 Byte |
| Status | WA |
| Exec Time | 48 ms |
| Memory | 1408 KiB |
Judge Result
| Set Name | Sample | All | ||||||
|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 0 / 400 | ||||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample01.txt, sample02.txt, sample03.txt, sample04.txt, sample05.txt |
| All | 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, sample01.txt, sample02.txt, sample03.txt, sample04.txt, sample05.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 01.txt | AC | 4 ms | 1408 KiB |
| 02.txt | WA | 14 ms | 1408 KiB |
| 03.txt | AC | 34 ms | 1408 KiB |
| 04.txt | WA | 41 ms | 1408 KiB |
| 05.txt | AC | 39 ms | 1408 KiB |
| 06.txt | WA | 23 ms | 1408 KiB |
| 07.txt | AC | 38 ms | 1408 KiB |
| 08.txt | WA | 30 ms | 1408 KiB |
| 09.txt | WA | 14 ms | 1408 KiB |
| 10.txt | WA | 25 ms | 1408 KiB |
| 11.txt | AC | 26 ms | 1408 KiB |
| 12.txt | AC | 16 ms | 1408 KiB |
| 13.txt | WA | 29 ms | 1408 KiB |
| 14.txt | WA | 30 ms | 1408 KiB |
| 15.txt | AC | 26 ms | 1408 KiB |
| 16.txt | AC | 29 ms | 1408 KiB |
| 17.txt | WA | 40 ms | 1408 KiB |
| 18.txt | WA | 16 ms | 1408 KiB |
| 19.txt | WA | 17 ms | 1408 KiB |
| 20.txt | WA | 35 ms | 1408 KiB |
| 21.txt | AC | 34 ms | 1408 KiB |
| 22.txt | AC | 30 ms | 1408 KiB |
| 23.txt | AC | 36 ms | 1408 KiB |
| 24.txt | AC | 25 ms | 1408 KiB |
| 25.txt | WA | 32 ms | 1408 KiB |
| 26.txt | WA | 39 ms | 1408 KiB |
| 27.txt | WA | 47 ms | 1408 KiB |
| 28.txt | WA | 29 ms | 1408 KiB |
| 29.txt | WA | 48 ms | 1408 KiB |
| 30.txt | WA | 26 ms | 1408 KiB |
| 31.txt | WA | 31 ms | 1408 KiB |
| 32.txt | WA | 27 ms | 1408 KiB |
| 33.txt | AC | 39 ms | 1408 KiB |
| 34.txt | AC | 40 ms | 1408 KiB |
| 35.txt | AC | 46 ms | 1408 KiB |
| 36.txt | AC | 29 ms | 1408 KiB |
| 37.txt | AC | 35 ms | 1408 KiB |
| 38.txt | AC | 32 ms | 1408 KiB |
| 39.txt | AC | 42 ms | 1408 KiB |
| 40.txt | AC | 38 ms | 1408 KiB |
| 41.txt | AC | 2 ms | 1408 KiB |
| 42.txt | AC | 4 ms | 1408 KiB |
| sample01.txt | AC | 1 ms | 256 KiB |
| sample02.txt | AC | 1 ms | 256 KiB |
| sample03.txt | AC | 1 ms | 256 KiB |
| sample04.txt | AC | 1 ms | 256 KiB |
| sample05.txt | AC | 1 ms | 256 KiB |