#include <bits/stdc++.h>
using namespace std;
const int mxN=1e5;
int n, m, k, a[mxN], b[mxN], ab[mxN], d[mxN], s[mxN], p[mxN], r[mxN], dt=1, tin[mxN], low[mxN];
bool bg[mxN];
vector<int> adj[mxN];
int find(int x) {
return x==p[x]?x:(p[x]=find(p[x]));
}
inline void join(int x, int y) {
if((x=find(x))==(y=find(y)))
return;
if(r[x]<r[y])
p[x]=y;
else
p[y]=x;
if(r[x]==r[y])
++r[x];
}
void dfs1(int u, int p) {
tin[u]=low[u]=dt++;
for(int e : adj[u]) {
int v=u^ab[e];
if(!tin[v]) {
dfs1(v, e);
low[u]=min(low[v], low[u]);
if(low[v]>tin[u])
bg[e]=1;
} else if(e!=p)
low[u]=min(tin[v], low[u]);
}
}
void dfs2(int u, int p) {
for(int e : adj[u]) {
int v=u^ab[e];
if(v==p)
continue;
d[v]=d[u]+1;
dfs2(v, u);
s[u]+=s[v];
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for(int i=0; i<n; ++i)
p[i]=i;
for(int i=0; i<m; ++i) {
cin >> a[i] >> b[i], --a[i], --b[i];
ab[i]=a[i]^b[i];
adj[a[i]].push_back(i);
adj[b[i]].push_back(i);
}
for(int i=0; i<n; ++i)
if(!tin[i])
dfs1(i, -1);
for(int i=0; i<m; ++i)
if(!bg[i])
join(a[i], b[i]);
for(int i=0; i<n; ++i)
adj[i].clear();
for(int i=0; i<m; ++i) {
if(!bg[i])
continue;
a[i]=find(a[i]);
b[i]=find(b[i]);
ab[i]=a[i]^b[i];
adj[a[i]].push_back(i);
adj[b[i]].push_back(i);
}
cin >> k;
while(k--) {
int x, y;
cin >> x >> y, --x, --y;
++s[find(x)], --s[find(y)];
}
for(int i=0; i<n; ++i) {
if(p[i]==i&&!d[i]) {
d[i]=1;
dfs2(i, -1);
}
}
for(int i=0; i<m; ++i) {
if(!bg[i]) {
cout << 'B';
continue;
}
assert(abs(d[a[i]]-d[b[i]])==1);
int u=d[a[i]]>d[b[i]]?a[i]:b[i];
cout << (s[u]?((s[u]>0)==(u==a[i])?'R':'L'):'B');
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
2644 KB |
Output is correct |
2 |
Correct |
2 ms |
2644 KB |
Output is correct |
3 |
Correct |
2 ms |
2772 KB |
Output is correct |
4 |
Correct |
2 ms |
2772 KB |
Output is correct |
5 |
Correct |
2 ms |
2772 KB |
Output is correct |
6 |
Correct |
2 ms |
2772 KB |
Output is correct |
7 |
Correct |
2 ms |
2772 KB |
Output is correct |
8 |
Correct |
2 ms |
2772 KB |
Output is correct |
9 |
Correct |
2 ms |
2644 KB |
Output is correct |
10 |
Correct |
2 ms |
2772 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
2644 KB |
Output is correct |
2 |
Correct |
2 ms |
2644 KB |
Output is correct |
3 |
Correct |
2 ms |
2772 KB |
Output is correct |
4 |
Correct |
2 ms |
2772 KB |
Output is correct |
5 |
Correct |
2 ms |
2772 KB |
Output is correct |
6 |
Correct |
2 ms |
2772 KB |
Output is correct |
7 |
Correct |
2 ms |
2772 KB |
Output is correct |
8 |
Correct |
2 ms |
2772 KB |
Output is correct |
9 |
Correct |
2 ms |
2644 KB |
Output is correct |
10 |
Correct |
2 ms |
2772 KB |
Output is correct |
11 |
Correct |
32 ms |
8308 KB |
Output is correct |
12 |
Correct |
40 ms |
9640 KB |
Output is correct |
13 |
Correct |
42 ms |
11184 KB |
Output is correct |
14 |
Correct |
63 ms |
12428 KB |
Output is correct |
15 |
Correct |
54 ms |
12792 KB |
Output is correct |
16 |
Correct |
57 ms |
10388 KB |
Output is correct |
17 |
Correct |
55 ms |
12244 KB |
Output is correct |
18 |
Correct |
61 ms |
10264 KB |
Output is correct |
19 |
Correct |
48 ms |
13644 KB |
Output is correct |
20 |
Correct |
37 ms |
9104 KB |
Output is correct |
21 |
Correct |
34 ms |
9388 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
2644 KB |
Output is correct |
2 |
Correct |
2 ms |
2644 KB |
Output is correct |
3 |
Correct |
2 ms |
2772 KB |
Output is correct |
4 |
Correct |
2 ms |
2772 KB |
Output is correct |
5 |
Correct |
2 ms |
2772 KB |
Output is correct |
6 |
Correct |
2 ms |
2772 KB |
Output is correct |
7 |
Correct |
2 ms |
2772 KB |
Output is correct |
8 |
Correct |
2 ms |
2772 KB |
Output is correct |
9 |
Correct |
2 ms |
2644 KB |
Output is correct |
10 |
Correct |
2 ms |
2772 KB |
Output is correct |
11 |
Correct |
32 ms |
8308 KB |
Output is correct |
12 |
Correct |
40 ms |
9640 KB |
Output is correct |
13 |
Correct |
42 ms |
11184 KB |
Output is correct |
14 |
Correct |
63 ms |
12428 KB |
Output is correct |
15 |
Correct |
54 ms |
12792 KB |
Output is correct |
16 |
Correct |
57 ms |
10388 KB |
Output is correct |
17 |
Correct |
55 ms |
12244 KB |
Output is correct |
18 |
Correct |
61 ms |
10264 KB |
Output is correct |
19 |
Correct |
48 ms |
13644 KB |
Output is correct |
20 |
Correct |
37 ms |
9104 KB |
Output is correct |
21 |
Correct |
34 ms |
9388 KB |
Output is correct |
22 |
Correct |
66 ms |
13388 KB |
Output is correct |
23 |
Correct |
72 ms |
11436 KB |
Output is correct |
24 |
Correct |
71 ms |
11536 KB |
Output is correct |
25 |
Correct |
64 ms |
16992 KB |
Output is correct |
26 |
Correct |
62 ms |
12864 KB |
Output is correct |
27 |
Correct |
66 ms |
11532 KB |
Output is correct |
28 |
Correct |
27 ms |
6220 KB |
Output is correct |
29 |
Correct |
55 ms |
9820 KB |
Output is correct |
30 |
Correct |
53 ms |
10492 KB |
Output is correct |
31 |
Correct |
52 ms |
10252 KB |
Output is correct |
32 |
Correct |
55 ms |
13464 KB |
Output is correct |