Submission #47551491
Source Code Expand
#include <bits/stdc++.h>
#include <atcoder/modint>
#include <atcoder/dsu>
namespace {
using ModInt [[maybe_unused]] = atcoder::modint998244353;
using Num [[maybe_unused]] = long long int;
using Vec [[maybe_unused]] = std::vector<Num>;
using Set [[maybe_unused]] = std::set<Num>;
using Mset [[maybe_unused]] = std::multiset<Num>;
using Edges [[maybe_unused]] = std::vector<std::vector<Num>>;
template<typename T>
using Q [[maybe_unused]] = std::queue<T>;
template<typename T>
using PQ [[maybe_unused]] = std::priority_queue<T, std::vector<T>, std::greater<T>>;
}
void solve(std::istream& is, std::ostream& os) {
Num n, q;
is >> n >> q;
Edges edges(n);
std::map<std::pair<Num, Num>, Num> weights;
std::vector<std::tuple<Num, Num, Num>> queries(q);
atcoder::dsu tree(n);
for(Num i{0}; i<q; ++i) {
Num a, b, d;
is >> b >> a >> d;
--a;
--b;
queries.at(i) = std::make_tuple(a, b, d);
if (!tree.same(a, b)) {
tree.merge(a, b);
edges[a].push_back(b);
edges[b].push_back(a);
weights[std::make_pair(a,b)] = d;
weights[std::make_pair(b,a)] = -d;
}
}
std::vector<std::optional<Num>> distances(n);
for(Num i{0}; i<n; ++i) {
if (distances.at(i).has_value()) {
continue;
}
Q<Num> q;
auto current = tree.leader(i);
distances.at(current) = 0;
q.push(current);
while(!q.empty()) {
const auto current = q.front();
q.pop();
for(const auto& next : edges[current]) {
if (distances.at(next).has_value()) {
continue;
}
distances.at(next) = distances.at(current).value() + weights.at(std::make_pair(current, next));
q.push(next);
}
}
}
Vec answer;
for(Num i{0}; i<q; ++i) {
const auto& [a, b, d] = queries.at(i);
const auto dist = distances.at(b).value() - distances.at(a).value();
if (dist == d) {
answer.push_back(i+1);
}
}
const auto size = answer.size();
for(size_t i{0}; i<size; ++i) {
os << answer.at(i);
if ((i+1) == size) {
os << "\n";
} else {
os << " ";
}
}
}
int main(void) {
solve(std::cin, std::cout);
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Good Set Query |
| User | zettsut |
| Language | C++ 20 (gcc 12.2) |
| Score | 525 |
| Code Size | 2509 Byte |
| Status | AC |
| Exec Time | 407 ms |
| Memory | 52420 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 525 / 525 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | example0.txt, example1.txt, example2.txt |
| All | 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, example0.txt, example1.txt, example2.txt, hack_001.txt, hack_002.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 000.txt | AC | 60 ms | 8836 KiB |
| 001.txt | AC | 104 ms | 10060 KiB |
| 002.txt | AC | 104 ms | 18656 KiB |
| 003.txt | AC | 91 ms | 16468 KiB |
| 004.txt | AC | 101 ms | 17456 KiB |
| 005.txt | AC | 251 ms | 49728 KiB |
| 006.txt | AC | 247 ms | 49784 KiB |
| 007.txt | AC | 252 ms | 52420 KiB |
| 008.txt | AC | 245 ms | 52412 KiB |
| 009.txt | AC | 101 ms | 10100 KiB |
| 010.txt | AC | 87 ms | 7896 KiB |
| 011.txt | AC | 88 ms | 8820 KiB |
| 012.txt | AC | 85 ms | 9980 KiB |
| 013.txt | AC | 67 ms | 9896 KiB |
| 014.txt | AC | 89 ms | 7896 KiB |
| 015.txt | AC | 94 ms | 8820 KiB |
| 016.txt | AC | 100 ms | 9920 KiB |
| 017.txt | AC | 72 ms | 10148 KiB |
| 018.txt | AC | 90 ms | 8008 KiB |
| 019.txt | AC | 98 ms | 8912 KiB |
| 020.txt | AC | 105 ms | 10096 KiB |
| 021.txt | AC | 77 ms | 10092 KiB |
| 022.txt | AC | 94 ms | 8196 KiB |
| 023.txt | AC | 102 ms | 9280 KiB |
| 024.txt | AC | 108 ms | 10452 KiB |
| 025.txt | AC | 85 ms | 10380 KiB |
| 026.txt | AC | 115 ms | 12332 KiB |
| 027.txt | AC | 123 ms | 12944 KiB |
| 028.txt | AC | 130 ms | 14020 KiB |
| 029.txt | AC | 111 ms | 13980 KiB |
| 030.txt | AC | 407 ms | 45732 KiB |
| 031.txt | AC | 402 ms | 45684 KiB |
| 032.txt | AC | 400 ms | 45596 KiB |
| 033.txt | AC | 383 ms | 45700 KiB |
| example0.txt | AC | 1 ms | 3516 KiB |
| example1.txt | AC | 10 ms | 11896 KiB |
| example2.txt | AC | 1 ms | 3508 KiB |
| hack_001.txt | AC | 1 ms | 3484 KiB |
| hack_002.txt | AC | 1 ms | 3572 KiB |