답안 #499339

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
499339 2021-12-28T03:43:16 Z kaxzert One-Way Streets (CEOI17_oneway) C++17
100 / 100
110 ms 22112 KB
#include <bits/stdc++.h>
using namespace std;

const int mxN=1e5;
int n, m, k, a[mxN], b[mxN], d[mxN], s[mxN], p[mxN], r[mxN], dt=1, tin[mxN], low[mxN];
bool bg[mxN];
vector<int> adj1[mxN], adj2[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 : adj1[u]) {
		int v=u^a[e]^b[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 : adj2[u]) {
		int v=u^a[e]^b[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];
		adj1[a[i]].push_back(i);
		adj1[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<m; ++i) {
		if(!bg[i])
			continue;
		a[i]=find(a[i]);
		b[i]=find(b[i]);
		adj2[a[i]].push_back(i);
		adj2[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;
		}
		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 3 ms 4940 KB Output is correct
2 Correct 3 ms 5028 KB Output is correct
3 Correct 4 ms 5028 KB Output is correct
4 Correct 3 ms 5068 KB Output is correct
5 Correct 3 ms 5068 KB Output is correct
6 Correct 3 ms 5032 KB Output is correct
7 Correct 3 ms 5068 KB Output is correct
8 Correct 3 ms 5032 KB Output is correct
9 Correct 3 ms 5068 KB Output is correct
10 Correct 4 ms 5068 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 4940 KB Output is correct
2 Correct 3 ms 5028 KB Output is correct
3 Correct 4 ms 5028 KB Output is correct
4 Correct 3 ms 5068 KB Output is correct
5 Correct 3 ms 5068 KB Output is correct
6 Correct 3 ms 5032 KB Output is correct
7 Correct 3 ms 5068 KB Output is correct
8 Correct 3 ms 5032 KB Output is correct
9 Correct 3 ms 5068 KB Output is correct
10 Correct 4 ms 5068 KB Output is correct
11 Correct 38 ms 10144 KB Output is correct
12 Correct 40 ms 11552 KB Output is correct
13 Correct 49 ms 13204 KB Output is correct
14 Correct 59 ms 15016 KB Output is correct
15 Correct 62 ms 15524 KB Output is correct
16 Correct 89 ms 15472 KB Output is correct
17 Correct 69 ms 17412 KB Output is correct
18 Correct 83 ms 15552 KB Output is correct
19 Correct 78 ms 18672 KB Output is correct
20 Correct 40 ms 11112 KB Output is correct
21 Correct 38 ms 11460 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 4940 KB Output is correct
2 Correct 3 ms 5028 KB Output is correct
3 Correct 4 ms 5028 KB Output is correct
4 Correct 3 ms 5068 KB Output is correct
5 Correct 3 ms 5068 KB Output is correct
6 Correct 3 ms 5032 KB Output is correct
7 Correct 3 ms 5068 KB Output is correct
8 Correct 3 ms 5032 KB Output is correct
9 Correct 3 ms 5068 KB Output is correct
10 Correct 4 ms 5068 KB Output is correct
11 Correct 38 ms 10144 KB Output is correct
12 Correct 40 ms 11552 KB Output is correct
13 Correct 49 ms 13204 KB Output is correct
14 Correct 59 ms 15016 KB Output is correct
15 Correct 62 ms 15524 KB Output is correct
16 Correct 89 ms 15472 KB Output is correct
17 Correct 69 ms 17412 KB Output is correct
18 Correct 83 ms 15552 KB Output is correct
19 Correct 78 ms 18672 KB Output is correct
20 Correct 40 ms 11112 KB Output is correct
21 Correct 38 ms 11460 KB Output is correct
22 Correct 92 ms 18568 KB Output is correct
23 Correct 110 ms 16856 KB Output is correct
24 Correct 90 ms 16684 KB Output is correct
25 Correct 92 ms 22112 KB Output is correct
26 Correct 110 ms 17964 KB Output is correct
27 Correct 85 ms 16768 KB Output is correct
28 Correct 30 ms 8192 KB Output is correct
29 Correct 60 ms 11756 KB Output is correct
30 Correct 52 ms 12356 KB Output is correct
31 Correct 58 ms 12228 KB Output is correct
32 Correct 63 ms 16432 KB Output is correct