제출 #1308852

#제출 시각아이디문제언어결과실행 시간메모리
1308852BalsaOne-Way Streets (CEOI17_oneway)C++17
60 / 100
3095 ms24084 KiB
#include <bits/stdc++.h> using namespace std; #define all(x) (x).begin(), (x).end() #define fi first #define se second using ll = long long; const ll MAXN = 100005; const ll MAXM = 100005; vector<tuple<ll, ll, char>> edges[MAXN]; bool vis[MAXN]; ll tin[MAXN], low[MAXN]; bool is_bridge[MAXM]; ll timer = 0; ll who[MAXN]; ll comp_num = 1; stack<ll> st; void find_bridges(ll v, ll peid) { if (vis[v]) return; vis[v] = 1; tin[v] = low[v] = timer++; st.push(v); for (auto[u, id, dir] : edges[v]) { if (id == peid) continue; if (!vis[u]) { find_bridges(u, id); low[v] = min(low[v], low[u]); if (low[u] > tin[v]) { is_bridge[id] = 1; while (1) { ll x = st.top(); st.pop(); who[x] = comp_num; if (x == u) break; } comp_num++; } } else { low[v] = min(low[v], tin[u]); } } } vector<tuple<ll, ll, char>> tecc_edges[MAXN]; string ans; bool dfs(ll v, ll p, ll dest) { if (v == dest) return true; for (auto[u, id, dir] : tecc_edges[v]) { if (u == p) continue; if (dfs(u, v, dest)) { ans[id] = dir; return true; } } return false; } void solve() { ll n, m; cin >> n >> m; for (ll i = 0; i < m; i++) { ll v, u; cin >> v >> u; v--, u--; edges[v].push_back({u, i, 'R'}); edges[u].push_back({v, i, 'L'}); } for (ll v = 0; v < n; v++) tin[v] = low[v] = 1e18; for (ll v = 0; v < n; v++) { if (vis[v]) continue; find_bridges(v, -1); } for (ll v = 0; v < n; v++) { for (auto[u, id, dir] : edges[v]) { if (who[v] == who[u]) continue; tecc_edges[who[v]].push_back({who[u], id, dir}); } } ans.assign(m, 'B'); ll q; cin >> q; while (q--) { ll v, u; cin >> v >> u; v--, u--; dfs(who[v], -1, who[u]); } cout << ans << '\n'; } int main() { // freopen("promote.in", "r", stdin); // freopen("promote.out", "w", stdout); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...