#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define MASK(x) ((1LL) << (x))
#define BIT(x, i) (((x) >> (i)) & (1LL))
#define str string
#define fi first
#define se second
#define pii pair<int, int>
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define endline '\n'
#define all(x) (x).begin(),(x).end()
#define log 20
#define FOR(i,l,r,val) for(int i = l;i <= r ; i = i + val)
#define FORD(i,l,r,val) for(int i = l;i >= r; i = i - val)
template<typename T> bool maximize(T &res, const T &val) { if (res < val){ res = val; return 1; }; return 0; }
template<typename T> bool minimize(T &res, const T &val) { if (res > val){ res = val; return 1; }; return 0; }
using namespace std;
const int N = 1e6 + 3;
int n, m, p;
pii ke[N], q[N];
bool check(int nn, int di)
{
vector<vector<int>> g(n + 1);
FOR(i, 1, m, 1)
{
int u = ke[i].fi;
int v = ke[i].se;
if(i == nn)
{
if(di == 0) g[u].pb(v);
else g[v].pb(u);
}
else
{
g[u].pb(v);
g[v].pb(u);
}
}
for(pii t : q)
{
int x = t.fi, y = t.se;
vector<int> vi(n + 1, 0);
queue<int> mp;
vi[x] = 1;
mp.push(x);
bool dd = false;
while(!mp.empty())
{
int u = mp.front();
mp.pop();
if(u == y)
{
dd = true;
break;
}
for(int tt : g[u])
{
if(!vi[tt])
{
vi[tt] = 1;
mp.push(tt);
}
}
}
if(!dd) return false;
}
return true;
}
int main()
{
faster
// freopen("way.inp","r",stdin);
//freopen("way.out","w",stdout);
cin >> n >> m;
FOR(i, 1, m, 1) cin >> ke[i].fi >> ke[i].se;
cin >> p;
FOR(i, 1, p, 1) cin >> q[i].fi >> q[i].se;
str ans = "";
FOR(i, 1, m, 1)
{
bool okR = check(i, 0);
bool okL = check(i, 1);
if (okR && okL) ans += 'B';
else if (okR) ans += 'R';
else ans += 'L';
}
cout << ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |