Submission #1027215

#TimeUsernameProblemLanguageResultExecution timeMemory
1027215coldbr3wOne-Way Streets (CEOI17_oneway)C++17
60 / 100
3072 ms44352 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pll pair<long long, long long> #define pb push_back #define F first #define S second #define all(x) (x).begin(), (x).end() const ll N = 2e5 + 100; const ll inf = 1e18; const ll mod = 1e9 + 7; const ll block = 480; ll n,m,p,timer=0; struct ccjv{ll v, prv, nxt;}; vector<pll>adj[N]; vector<ccjv>g[N]; ll cmp[N], low[N], num[N], b[N], pa[N]; pll edge[N]; ll cur = 0; vector<pll>order; map<pll,ll>dir; void pre_dfs(ll u, ll par){ low[u] = num[u] = ++timer; for(auto x : adj[u]){ ll v = x.F, idx = x.S; if(idx == par) continue; if(num[v]) low[u] = min(low[u], num[v]); else{ pre_dfs(v, idx); low[u] = min(low[u], low[v]); if(low[v] == num[v]) { //cout << "bridge" << ' ' << u << ' ' << v << '\n'; b[idx] = 1; } } } } void dfs_cmp(ll u, ll par){ cmp[u] = cur; for(auto x : adj[u]){ ll v = x.F, idx = x.S; if(idx == par) continue; if(b[idx]){ if(cmp[v]) g[cmp[u]].pb({cmp[v], u, v}), g[cmp[v]].pb({cmp[u], v, u}); } else if(!cmp[v]) dfs_cmp(v, idx); } } void dfs(ll u, ll par, ll b){ if(u == b){ for(auto x : order){ dir[{x.F, x.S}] = 1; dir[{x.S, x.F}] = -1; } } for(auto x : g[u]){ ll v = x.v; if(v == par) continue; order.pb({x.prv, x.nxt}); dfs(v, u, b); order.pop_back(); } } void to_thic_cau(){ cin >> n >> m; for(int i = 1; i <= m;i++){ ll u,v; cin >> u >> v; edge[i] = {u, v}; adj[u].pb({v, i}); adj[v].pb({u, i}); } for(int i = 1; i <= n;i++) if(!num[i]) pre_dfs(i, 0); for(int i = 1; i <= n;i++){ if(!cmp[i]){ ++cur; dfs_cmp(i, 0); } } cin >> p; for(int i = 1; i <= p;i++){ ll a,b; cin >> a >> b; dfs(cmp[a], 0, cmp[b]); order.clear(); } for(int i = 1; i <= m;i++){ if(!b[i]){ cout << 'B'; } else{ if(!dir[{edge[i].F, edge[i].S}]) cout << 'B'; else if(dir[{edge[i].F, edge[i].S}] == 1) cout << 'R'; else cout << 'L'; } } cout << '\n'; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll tc = 1; //cin >> tc; while(tc--) to_thic_cau(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...