Submission #1179333

#TimeUsernameProblemLanguageResultExecution timeMemory
1179333danglayloi1One-Way Streets (CEOI17_oneway)C++20
0 / 100
3 ms4932 KiB
#include <bits/stdc++.h> #define ii pair<int, int> #define fi first #define se second #define inf 0x3f3f3f3f3f3f3f3f using namespace std; using ll = long long; const ll mod=1e9+7; const int nx=1e5+5; int n, m, q, num[nx], low[nx], tim=0, dem=0, id[nx], dp[nx]; ii a[nx], ed[nx]; bool vis[nx]; stack<int> st; vector<int> adj[nx]; vector<ii> g[nx]; char ans[nx]; void dfs(int p, int u) { num[u]=low[u]=++tim; st.push(u); for(int v:adj[u]) { if(v==p) continue; if(!num[v]) { dfs(u, v); low[u]=min(low[u], low[v]); } else low[u]=min(low[u], num[v]); } if(low[u]==num[u]) { int v; dem++; do { v=st.top(); st.pop(); id[v]=dem; } while(v!=u); } } void dfs1(int u, int sus) { vis[u]=1; for(auto it:g[u]) { int v=it.fi; if(!vis[v]) dfs1(v, it.se), dp[u]+=dp[v]; } if(sus) { if(!dp[u]) ans[sus]='B'; else { if(dp[u]<0) ans[sus]=(u==id[a[sus].se])?'R':'L'; else ans[sus]=(u==id[a[sus].fi])?'R':'L'; } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen("oneway.inp", "r", stdin); // freopen("oneway.out", "w", stdout); cin>>n>>m; for(int i = 1; i <= m; i++) { int u, v; cin>>u>>v; adj[u].emplace_back(v); adj[v].emplace_back(u); a[i]={u, v}; } for(int i = 1; i <= n; i++) if(!num[i]) dfs(0, i); for(int i = 1; i <= m; i++) { int u=a[i].fi, v=a[i].se; if(id[u]!=id[v]) g[id[u]].emplace_back(id[v], i), g[id[v]].emplace_back(id[u], i); else ans[i]='B'; } cin>>q; while(q--) { int x, y; cin>>x>>y; dp[id[x]]++, dp[id[y]]--; } for(int i = 1; i <= dem; i++) if(!vis[i]) dfs1(i, 0); for(int i = 1; i <= m; i++) cout<<ans[i]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...