Submission #1353508

#TimeUsernameProblemLanguageResultExecution timeMemory
1353508goulthenOne-Way Streets (CEOI17_oneway)C++20
Compilation error
0 ms0 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 = 5e5+10;
const int INF = 1e18+10;
const int MOD = 1e9+7;
vector<pii> g[MAXN];
vector<int> t[MAXN];
int tin[MAXN], tout[MAXN], par[MAXN],mk[MAXN], eid[MAXN], dp[MAXN],dir[MAXN],down[MAXN],tempo;
string ans;

bool isch(int u, int v) {
    return tin[u] >= tin[v] && tout[u] <= tout[v];
}

void dfs(int u, int p = -1, int li = -1) {
    if (mk[u]) {
        if(tin[u] < tin[p]) {
            dp[p]++;
            dp[u]--;
        }
        return;
    }
    if(p!=-1) {
        t[p].pb(u);
        par[u] = p;
    }
    mk[u] = 1;
    tin[u] = ++tempo;
    for(auto &[v,i] : g[u]) {
        if(abs(i) == li) continue;
        if(!mk[v] && i>0) down[v] = 1;
        else if(!mk[v]) down[v] = 0;
        if(!mk[v]) eid[v] = abs(i);

        dfs(v,u,abs(i));
    }
    tout[u] = ++t;
}

void calc(int u) {
    for(int &v : t[u]) {
        calc(v);
        dp[u] += dp[v];
        dir[u]+=dir[v];
    }
}

void solve() {
    int n,m; cin >> n >> m;
    rep(i,1,m) {
        int u,v; cin >> u >> v;
        g[u].pb({v,i});
        g[v].pb({u,-i});
    }
    rep(i,1,m) ans += 'B';
    dfs(1);
    calc(1);
    int p; cin >> p;
    rep(i,1,p) {
        int u,v; cin >> u >> v;
        rep(i,2,n) {
            if(isch(i,u) && isch(i,v)) continue;
            if((isch(i,u) && down[i]) || (isch(i,v) && !down[i])) ans[eid[i]-1] = 'L';
            else ans[eid[i]-1] = 'R';
        }
    }
    
    cout << ans << endl;
}

int32_t main() {
    ios_base::sync_with_stdio(0);cin.tie(nullptr);
	int tt = 1;
    //cin >> tt;
    
    while(tt--) solve();
}

Compilation message (stderr)

oneway.cpp: In function 'void dfs(long long int, long long int, long long int)':
oneway.cpp:48:17: error: lvalue required as increment operand
   48 |     tout[u] = ++t;
      |                 ^