Submission #1353513

#TimeUsernameProblemLanguageResultExecution timeMemory
1353513goulthenOne-Way Streets (CEOI17_oneway)C++20
0 / 100
2786 ms460 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define rep(i,a,b) for (int i = a; i <= b; i++)
#define per(i,a,b) for (int i = a; i >= b; i--)
#define pii pair<int,int>
#define fi first
#define se second
#define endl '\n'
#define pb push_back
#define all(v) (v).begin(), (v).end()

const int MAXN = 1e3+10;
const int INF = 1e18+10;
const int MOD = 1e9+7;
vector<int> g[MAXN];
bool vis[MAXN][MAXN];

void dfs(int u,int head) {
    if(vis[head][u]) return;
    vis[head][u] = 1;
    for(int &v : g[u]) dfs(v,head);
}

void solve() {
    int n,m; cin >> n >> m;
    vector<pii> e(m), imp;
    string ans;
    rep(i,1,m) ans+='a';
    for(auto &x : e) cin >> x.fi >> x.se;
    int p; cin >> p;
    imp.resize(p);
    for(auto &x : imp) cin >> x.fi >> x.se;

    rep(mk,0,(1<<m)-1) {
        rep(i,1,n) g[i].clear();
        rep(i,1,n) rep(j,1,n) vis[i][j] = 0;
        rep(i,0,m-1) {
            int u = e[i].fi;
            int v = e[i].se;
            if(mk>>i&1) g[u].pb(v);
            else g[v].pb(u);
        }
        rep(i,1,n) dfs(i,i);
        bool ok = 1;
        for(auto &[u,v] : imp) {
            ok &= vis[u][v];
        }
        if(!ok) continue;

        rep(i,0,m-1) {
            char cur = 'R';
            if(mk>>i&1) cur = 'L';

            if(ans[i]=='a') {
                ans[i] = cur;
                continue;
            }
            if(ans[i]!=cur) {
                ans[i] = 'B';
            }
        }
    }
    cout << ans << endl;
}

int32_t main() {
    ios_base::sync_with_stdio(0);cin.tie(nullptr);
	int tt = 1;
    //cin >> tt;
    
    while(tt--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...