#include<bits/stdc++.h>
#define int long long
#define fi first
#define se second
using namespace std;
const int maxn = 1e5 + 5;
const int inf = 1e18;
typedef pair<int, int> pii;
int low[maxn], num[maxn], tds, scc;
int lab[maxn], n, m, d[maxn], q;
char s[maxn];
stack<int> st;
vector<int> adj[maxn], g[maxn];
pii canh[maxn];
bool check[maxn];
void dfs(int u, int par)
{
low[u] = num[u] = ++tds;
st.push(u);
int tds = 0;
for(int v : adj[u]){
if(v != par || tds == 1){
if(num[v] != 0)
low[u] = min(low[u], num[v]);
else{
dfs(v, u);
low[u] = min(low[u], low[v]);
}
}
else{
tds++;
}
}
if(low[u] >= num[u]){
scc++;
int tmp;
do
{
tmp = st.top();
st.pop();
lab[tmp] = scc;
// for (int w: adj[tmp]) {
// if (lab[w] && scc != lab[w]){
// g[scc].push_back(lab[w]);
//// cout << lab[w] << ' ' << scc << endl;
// }
// }
low[tmp] = num[tmp] = inf;
}while(tmp != u);
}
}
void dfs_work(int u)
{
check[u] = true;
for(int v : g[u]){
if(!check[v])
dfs_work(v);
d[u] += d[v];
}
}
signed main()
{
// freopen("oneway.inp" , "r" , stdin);
// freopen("oneway.out" , "w" , stdout);
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> n >> m;
for(int i=1 ; i<=m ; ++i){
int u, v; cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
canh[i] = {u, v};
}
for(int i=1 ; i<=n ; ++i){
if(!num[i]){
dfs(i, 0);
}
}
for(int i=1 ; i<=m ; ++i){
auto [u, v] = canh[i];
int x = lab[u];
int y = lab[v];
if(x != y)
g[max(x, y)].push_back(min(x, y));
}
cin >> q;
for(int i=1 ; i<=q ; ++i){
int u, v; cin >> u >> v;
u = lab[u]; v = lab[v];
d[v]--; d[u]++;
}
for(int i=1 ; i<=scc ; ++i){
if(!check[i]){
dfs_work(i);
}
}
for(int i=1 ; i<=m ; ++i){
auto [u, v] = canh[i];
int x = lab[u]; int y = lab[v];
if(x == y){
s[i] = 'B';
}
if(x > y)
{
if(d[y] > 0) s[i] = 'L';
if(d[y] < 0) s[i] = 'R';
if(d[y] == 0) s[i] = 'B';
}
if(x < y)
{
if(d[x] > 0) s[i] = 'R';
if(d[x] < 0) s[i] = 'L';
if(d[x] == 0) s[i] = 'B';
}
}
for(int i=1 ; i<=m ; ++i){
cout << s[i];
}
}
/// code by yourlove ///
Compilation message
oneway.cpp: In function 'int main()':
oneway.cpp:90:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
90 | auto [u, v] = canh[i];
| ^
oneway.cpp:111:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
111 | auto [u, v] = canh[i];
| ^
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
8540 KB |
Output is correct |
2 |
Correct |
1 ms |
8540 KB |
Output is correct |
3 |
Correct |
2 ms |
8540 KB |
Output is correct |
4 |
Correct |
2 ms |
8540 KB |
Output is correct |
5 |
Correct |
2 ms |
8540 KB |
Output is correct |
6 |
Correct |
2 ms |
8540 KB |
Output is correct |
7 |
Correct |
2 ms |
8540 KB |
Output is correct |
8 |
Correct |
2 ms |
8540 KB |
Output is correct |
9 |
Correct |
2 ms |
8540 KB |
Output is correct |
10 |
Correct |
2 ms |
8540 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
8540 KB |
Output is correct |
2 |
Correct |
1 ms |
8540 KB |
Output is correct |
3 |
Correct |
2 ms |
8540 KB |
Output is correct |
4 |
Correct |
2 ms |
8540 KB |
Output is correct |
5 |
Correct |
2 ms |
8540 KB |
Output is correct |
6 |
Correct |
2 ms |
8540 KB |
Output is correct |
7 |
Correct |
2 ms |
8540 KB |
Output is correct |
8 |
Correct |
2 ms |
8540 KB |
Output is correct |
9 |
Correct |
2 ms |
8540 KB |
Output is correct |
10 |
Correct |
2 ms |
8540 KB |
Output is correct |
11 |
Correct |
25 ms |
12892 KB |
Output is correct |
12 |
Correct |
26 ms |
13916 KB |
Output is correct |
13 |
Correct |
30 ms |
14940 KB |
Output is correct |
14 |
Correct |
36 ms |
15956 KB |
Output is correct |
15 |
Correct |
33 ms |
15952 KB |
Output is correct |
16 |
Correct |
36 ms |
15588 KB |
Output is correct |
17 |
Correct |
36 ms |
17564 KB |
Output is correct |
18 |
Correct |
43 ms |
15776 KB |
Output is correct |
19 |
Correct |
36 ms |
18516 KB |
Output is correct |
20 |
Correct |
27 ms |
13648 KB |
Output is correct |
21 |
Correct |
26 ms |
13104 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
8540 KB |
Output is correct |
2 |
Correct |
1 ms |
8540 KB |
Output is correct |
3 |
Correct |
2 ms |
8540 KB |
Output is correct |
4 |
Correct |
2 ms |
8540 KB |
Output is correct |
5 |
Correct |
2 ms |
8540 KB |
Output is correct |
6 |
Correct |
2 ms |
8540 KB |
Output is correct |
7 |
Correct |
2 ms |
8540 KB |
Output is correct |
8 |
Correct |
2 ms |
8540 KB |
Output is correct |
9 |
Correct |
2 ms |
8540 KB |
Output is correct |
10 |
Correct |
2 ms |
8540 KB |
Output is correct |
11 |
Correct |
25 ms |
12892 KB |
Output is correct |
12 |
Correct |
26 ms |
13916 KB |
Output is correct |
13 |
Correct |
30 ms |
14940 KB |
Output is correct |
14 |
Correct |
36 ms |
15956 KB |
Output is correct |
15 |
Correct |
33 ms |
15952 KB |
Output is correct |
16 |
Correct |
36 ms |
15588 KB |
Output is correct |
17 |
Correct |
36 ms |
17564 KB |
Output is correct |
18 |
Correct |
43 ms |
15776 KB |
Output is correct |
19 |
Correct |
36 ms |
18516 KB |
Output is correct |
20 |
Correct |
27 ms |
13648 KB |
Output is correct |
21 |
Correct |
26 ms |
13104 KB |
Output is correct |
22 |
Correct |
50 ms |
17488 KB |
Output is correct |
23 |
Correct |
61 ms |
15732 KB |
Output is correct |
24 |
Correct |
50 ms |
15700 KB |
Output is correct |
25 |
Correct |
49 ms |
20572 KB |
Output is correct |
26 |
Correct |
49 ms |
17160 KB |
Output is correct |
27 |
Correct |
48 ms |
15868 KB |
Output is correct |
28 |
Correct |
20 ms |
10840 KB |
Output is correct |
29 |
Correct |
38 ms |
13064 KB |
Output is correct |
30 |
Correct |
47 ms |
13444 KB |
Output is correct |
31 |
Correct |
45 ms |
13688 KB |
Output is correct |
32 |
Correct |
42 ms |
16076 KB |
Output is correct |