結果
問題 |
No.3056 Disconnected Coloring
|
ユーザー |
![]() |
提出日時 | 2025-03-14 23:20:19 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 3,832 bytes |
コンパイル時間 | 6,194 ms |
コンパイル使用メモリ | 333,628 KB |
実行使用メモリ | 18,876 KB |
最終ジャッジ日時 | 2025-03-14 23:20:54 |
合計ジャッジ時間 | 13,246 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 21 WA * 13 |
ソースコード
#include <bits/stdc++.h> using namespace std; using std::cerr; using std::cin; using std::cout; #if __has_include(<atcoder/all>) #include <atcoder/all> using mint = atcoder::modint1000000007; istream &operator>>(istream &is, mint &a) { int t; is >> t; a = t; return is; } ostream &operator<<(ostream &os, mint a) { return os << a.val(); } #endif #undef long #define long long long #define uint unsigned int #define ull unsigned long #define overload3(a, b, c, name, ...) name #define rep3(i, a, b) for (int i = (a); i < (b); i++) #define rep2(i, n) rep3(i, 0, n) #define rep1(n) rep2(i, n) #define rep(...) overload3(__VA_ARGS__, rep3, rep2, rep1)(__VA_ARGS__) #define per3(i, a, b) for (int i = (b) - 1; i >= (a); i--) #define per2(i, n) per3(i, 0, n) #define per1(n) per2(i, n) #define per(...) overload3(__VA_ARGS__, per3, per2, per1)(__VA_ARGS__) #define ALL(a) a.begin(), a.end() #define UNIQUE(a) \ sort(ALL(a)); \ a.erase(unique(ALL(a)), a.end()) #define SZ(a) (int)a.size() #define vec vector #ifndef DEBUG #define cerr \ if (false) \ cerr #undef assert #define assert(...) void(0) #undef endl #define endl '\n' #endif template <typename T> ostream &operator<<(ostream &os, vector<T> a) { const int n = a.size(); rep(i, n) { os << a[i]; if (i + 1 != n) os << " "; } return os; } template <typename T, size_t n> ostream &operator<<(ostream &os, array<T, n> a) { rep(i, n) { os << a[i]; if (i + 1 != n) os << " "; } return os; } template <typename T> istream &operator>>(istream &is, vector<T> &a) { for (T &i : a) is >> i; return is; } template <typename T, typename S> bool chmin(T &x, S y) { if ((T)y < x) { x = (T)y; return true; } return false; } template <typename T, typename S> bool chmax(T &x, S y) { if (x < (T)y) { x = (T)y; return true; } return false; } template <typename T> void operator++(vector<T> &a) { for (T &i : a) ++i; } template <typename T> void operator--(vector<T> &a) { for (T &i : a) --i; } template <typename T> void operator++(vector<T> &a, int) { for (T &i : a) i++; } template <typename T> void operator--(vector<T> &a, int) { for (T &i : a) i--; } void solve() { int n, m; cin >> n >> m; vec<vec<pair<int, int>>> g(n); rep(i, m) { int u, v; cin >> u >> v; u--, v--; g[u].emplace_back(v, i); g[v].emplace_back(u, i); } vec<int> du(n, n), dv(n, n); queue<int> q; du[0] = 0; q.push(0); while (!q.empty()) { int x = q.front(); q.pop(); for (auto [i, idx] : g[x]) { if (du[i] != n) continue; du[i] = du[x] + 1; q.push(i); } } dv[n - 1] = 0; q.push(n - 1); while (!q.empty()) { int x = q.front(); q.pop(); for (auto [i, idx] : g[x]) { if (dv[i] != n) continue; dv[i] = dv[x] + 1; q.push(i); } } int c1 = 0, c2 = 0; vec<int> ans(m); for (auto [to, idx] : g[0]) { if (dv[0] == dv[to] + 1) { ans[idx] = 1; c1++; } } for (auto [to, idx] : g[n - 1]) { if (du[n - 1] == du[to] + 1) { ans[idx] = -1; c2++; } } rep(i, m) { if (ans[i] != 0) continue; if (2 * c1 < m) { ans[i] = 1; c1++; } else if (2 * c2 < m) { ans[i] = -1; c2++; } } if (c1 != c2) { cout << -1 << endl; return; } stringstream s; rep(i, m) { if (ans[i] == 1) s << 'R'; if (ans[i] == -1) s << 'B'; } string ss = s.str(); if (ss.size() != m) { cout << -1 << endl; return; } cout << ss << endl; return; } int main() { // srand((unsigned)time(NULL)); cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(20); int t = 1; // cin >> t; while (t--) solve(); }