/**
* __ __ __ __
* \ \ / / \ \ / (_) _____
* \ \ / /_ _\ \ / / _ ___|_ _|
* \ \/ /| | | |\ \/ / | |/ _ \ | |
* \ / | |_| | \ / | | __/ | |
* \/ \__,_| \/ |_|\____||_|
*
* Author: ~Noah-kun~
* Created: 2025-08-17 22:18
**/
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ____VuViet__ signed main
const int N = 1e5 + 5;
typedef pair<int, int> pii;
int cnt = 0, n, m, k, dd[N];
int comp[N], sum[N], res[N], vis[N];
vector<pii> g1[N], g2[N], dag[N];
deque<int> dq;
void AddEdge(int u, int v, int i)
{
g1[u].push_back({v, i});
g2[v].push_back({u, i});
}
void ReadData()
{
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
int u, v;
cin >> u >> v;
AddEdge(u, v, i);
AddEdge(v, u, -i);
}
}
void Scan(int u, int p)
{
dd[u] = 1;
for (auto [v, id] : g1[u])
if (!dd[v] && id != -p)
Scan(v, id);
dq.push_front(u);
}
void Enum(int u, int p)
{
dd[u] = 1, comp[u] = cnt;
for (auto [v, id] : g2[u])
if (!dd[v] && id != -p)
Enum(v, id);
}
void Kosaraju()
{
for (int u = 1; u <= n; ++u)
if (!dd[u])
Scan(u, u);
memset(dd, 0, sizeof(dd));
for (int u : dq)
{
if (dd[u]) continue;
++cnt; Enum(u, u);
}
}
void DFS(int u, int edgeId, int way)
{
vis[u] = 1;
for (auto [v, id] : dag[u])
{
if (vis[v]) continue;
int nextWay = (id > 0) ? 1 : -1;
DFS(v, abs(id), nextWay);
sum[u] += sum[v];
}
if (sum[u] != 0 && edgeId != 0) {
res[edgeId] = (sum[u] * way > 0) ? 1 : 2;
}
}
char GetChar(int x)
{
if (x == 0) return 'B';
if (x == 1) return 'L';
return 'R';
}
void Solve()
{
Kosaraju();
for (int u = 1; u <= n; u++)
for (auto [v, id] : g1[u])
if (comp[u] != comp[v])
dag[comp[u]].push_back({comp[v], id});
cin >> k;
while (k--)
{
int u, v;
cin >> u >> v;
++sum[comp[u]], --sum[comp[v]];
}
for (int i = 1; i <= cnt; i++)
if (!vis[i])
DFS(i, 0, 0);
for (int i = 1; i <= m; i++)
cout << GetChar(res[i]);
}
____VuViet__()
{
ReadData();
Solve();
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |