Submission #9591439
Source Code Expand
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
template <class Cost = int>
struct Edge {
int src, dst;
Cost cost;
Edge(int src = -1, int dst = -1, Cost cost = 1)
: src(src), dst(dst), cost(cost){};
bool operator<(const Edge<Cost>& e) const { return this->cost < e.cost; }
bool operator>(const Edge<Cost>& e) const { return this->cost > e.cost; }
};
template <class Cost = int>
using Edges = std::vector<Edge<Cost>>;
void solve() {
int n, m;
std::cin >> n >> m;
std::vector<int> ds(n);
for (int i = 0; i < n; ++i) {
auto& d = ds[i];
std::cin >> d;
}
Edges<int> es(m);
std::vector<std::vector<int>> graph(n);
for (int i = 0; i < m; ++i) {
auto& e = es[i];
std::cin >> e.src >> e.dst;
--e.src, --e.dst;
e.cost = 1e9;
graph[e.src].push_back(i);
graph[e.dst].push_back(i);
}
std::vector<bool> used(n, false);
std::vector<std::vector<int>> forest(n);
for (int v = 0; v < n; ++v) {
if (used[v]) continue;
// d_u <= d_vなる辺uvを探す
int eid = -1;
for (int i : graph[v]) {
const auto& e = es[i];
int u = e.src;
if (u == v) u = e.dst;
if (ds[u] <= ds[v]) {
eid = i;
break;
}
}
if (eid < 0) {
std::cout << -1 << std::endl;
return;
}
// 辺を森に追加
auto& e = es[eid];
int u = e.src;
if (u == v) u = e.dst;
e.cost = ds[v];
forest[v].push_back(u);
forest[u].push_back(v);
used[v] = true;
if (ds[u] == ds[v]) used[u] = true;
// uの条件も満たされる
}
// BFSで彩色
std::vector<int> cs(n, -1);
for (int r = 0; r < n; ++r) {
if (cs[r] >= 0) continue;
std::queue<int> que;
que.push(r);
cs[r] = 0;
while (!que.empty()) {
int v = que.front();
que.pop();
for (int u : forest[v]) {
if (cs[u] >= 0) continue;
cs[u] = 1 - cs[v];
que.push(u);
}
}
}
for (auto c : cs) std::cout << "BW"[c];
std::cout << std::endl;
for (const auto& e : es) std::cout << e.cost << std::endl;
}
int main() {
std::cin.tie(nullptr);
std::cout.tie(nullptr);
std::ios::sync_with_stdio(false);
solve();
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | E - Bichromization |
| User | Tiramister |
| Language | C++14 (GCC 5.4.1) |
| Score | 900 |
| Code Size | 2526 Byte |
| Status | AC |
| Exec Time | 404 ms |
| Memory | 17152 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 900 / 900 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample-01.txt, sample-02.txt, sample-03.txt |
| All | 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 03-06.txt, 03-07.txt, 03-08.txt, 03-09.txt, 03-10.txt, 04-01.txt, 04-02.txt, 04-03.txt, 04-04.txt, sample-01.txt, sample-02.txt, sample-03.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 01-01.txt | AC | 1 ms | 256 KiB |
| 01-02.txt | AC | 1 ms | 256 KiB |
| 01-03.txt | AC | 1 ms | 256 KiB |
| 01-04.txt | AC | 1 ms | 256 KiB |
| 01-05.txt | AC | 1 ms | 256 KiB |
| 01-06.txt | AC | 1 ms | 256 KiB |
| 01-07.txt | AC | 1 ms | 256 KiB |
| 01-08.txt | AC | 1 ms | 256 KiB |
| 01-09.txt | AC | 1 ms | 256 KiB |
| 01-10.txt | AC | 1 ms | 256 KiB |
| 02-01.txt | AC | 379 ms | 17112 KiB |
| 02-02.txt | AC | 394 ms | 16768 KiB |
| 02-03.txt | AC | 399 ms | 16640 KiB |
| 02-04.txt | AC | 395 ms | 16640 KiB |
| 02-05.txt | AC | 57 ms | 2304 KiB |
| 02-06.txt | AC | 57 ms | 2304 KiB |
| 02-07.txt | AC | 57 ms | 2304 KiB |
| 02-08.txt | AC | 404 ms | 17152 KiB |
| 02-09.txt | AC | 58 ms | 2304 KiB |
| 02-10.txt | AC | 58 ms | 2304 KiB |
| 02-11.txt | AC | 64 ms | 11640 KiB |
| 02-12.txt | AC | 10 ms | 1664 KiB |
| 02-13.txt | AC | 10 ms | 1664 KiB |
| 02-14.txt | AC | 70 ms | 11392 KiB |
| 02-15.txt | AC | 57 ms | 2304 KiB |
| 02-16.txt | AC | 404 ms | 17152 KiB |
| 03-01.txt | AC | 21 ms | 1792 KiB |
| 03-02.txt | AC | 23 ms | 1664 KiB |
| 03-03.txt | AC | 219 ms | 13824 KiB |
| 03-04.txt | AC | 221 ms | 14080 KiB |
| 03-05.txt | AC | 224 ms | 13952 KiB |
| 03-06.txt | AC | 223 ms | 13952 KiB |
| 03-07.txt | AC | 5 ms | 1280 KiB |
| 03-08.txt | AC | 42 ms | 9728 KiB |
| 03-09.txt | AC | 231 ms | 13952 KiB |
| 03-10.txt | AC | 41 ms | 9728 KiB |
| 04-01.txt | AC | 304 ms | 6912 KiB |
| 04-02.txt | AC | 297 ms | 6912 KiB |
| 04-03.txt | AC | 29 ms | 4992 KiB |
| 04-04.txt | AC | 29 ms | 4992 KiB |
| sample-01.txt | AC | 1 ms | 256 KiB |
| sample-02.txt | AC | 1 ms | 256 KiB |
| sample-03.txt | AC | 1 ms | 256 KiB |