// Author: caption_mingle
#include "bits/stdc++.h"
using namespace std;
#define ln "\n"
#define pb push_back
#define fi first
#define se second
#define all(x) (x).begin(), (x).end()
#define sz(x) ((int)(x).size())
#define ll long long
const int mod = 1e9 + 7;
const int inf = 2e9;
const int N = 1e5 + 7;
int n, m, q, scc;
int num[N], low[N], timer, del[N], id[N];
bool vis[N];
char ans[N];
vector<int> st;
int f[N];
pair<int, int> edge[N];
vector<pair<int, int>> g[N], g2[N];
void dfs(int u, int eid) {
low[u] = num[u] = ++timer;
st.pb(u);
for(auto [v, id] : g[u]) {
if(id == eid or del[v]) continue;
if(num[v]) {
low[u] = min(low[u], num[v]);
} else {
dfs(v, id);
low[u] = min(low[u], low[v]);
}
}
if(num[u] == low[u]) {
int v;
scc++;
do {
v = st.back();
del[v] = 1;
id[v] = scc;
st.pop_back();
} while(v != u);
}
}
void dfs2(int u, int p) {
vis[u] = 1;
for(auto [v, eid] : g2[u]) {
if(v == p) continue;
dfs2(v, u);
f[u] += f[v];
auto [a, b] = edge[eid];
// cerr << a << ' ' << b << ' ' << u << ' ' << v << ln;
if(f[v] < 0) {
// v - > u;
if(id[a] == v) ans[eid] = 'L';
else ans[eid] = 'R';
} else if(f[v] > 0) {
//u -> v;
if(id[a] == v) ans[eid] = 'R';
else ans[eid] = 'L';
}
}
}
signed main() {
cin.tie(0) -> sync_with_stdio(0);
#define task ""
if(fopen(task ".INP", "r")) {
freopen(task ".INP", "r", stdin);
freopen(task ".OUT", "w", stdout);
}
cin >> n >> m;
for(int i = 1; i <= m; i++) {
int u, v; cin >> u >> v;
ans[i] = 'B';
if(u != v) {
g[u].pb({v, i});
g[v].pb({u, i});
edge[i] = {u, v};
}
}
for(int i = 1; i <= n; i++) {
if(num[i]) continue;
dfs(i, 0);
}
for(int u = 1; u <= n; u++) {
for(auto [v, eid] : g[u]) {
if(id[v] != id[u]) {
int U = id[u], V = id[v];
g2[U].pb({V, eid});
}
}
}
cin >> q;
for(int i = 1; i <= q; i++) {
int u, v; cin >> u >> v;
int U = id[u], V = id[v];
f[U]++;
f[V]--;
}
for(int u = 1; u <= n; u++) {
if(vis[u]) continue;
dfs2(u, 0);
}
for(int i = 1; i <= m; i++) cout << ans[i];
cerr << "\nTime: " << clock() * 1000 / CLOCKS_PER_SEC;
}
Compilation message (stderr)
oneway.cpp: In function 'int main()':
oneway.cpp:74:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
74 | freopen(task ".INP", "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
oneway.cpp:75:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
75 | freopen(task ".OUT", "w", stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |