Submission #1221822

#TimeUsernameProblemLanguageResultExecution timeMemory
1221822vaneaOne-Way Streets (CEOI17_oneway)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int mxN = 1e5+10; int id[mxN], low[mxN], timer = 0, p[mxN], dep[mxN], ans[mxN]; vector<array<int, 3>> adj[mxN], adj1[mxN]; stack<int> s; array<int, 3> par[mxN]; int get(int x) { return p[x] < 0 ? x : p[x] = get(p[x]); } void uni(int a, int b) { a = get(a); b = get(b); if(a == b) return ; p[a] += p[b]; p[b] = a; } int dfs(int node, int p, int idx = -1) { id[node] = low[node] = ++timer; bool multiple_edges = false; s.push(node); for(auto [it, idx, flag] : adj[node]) { if(it == p) { if(!multiple_edges) { multiple_edges = true; continue; } } if(!id[it]) { dfs(it, node, idx); low[node] = min(low[node], low[it]); } else { low[node] = min(low[node], id[it]); } } if(low[node] == id[node]) { while(s.top() != node) { uni(node, s.top()); s.pop(); } s.pop(); } } void dfs1(int node, int p, int idx = 0, int flag = 0) { if(p != 0) par[node] = {p, idx, -flag}; for(auto [it, idx, flag] : adj1[node]) { if(it == p) continue; dep[it] = dep[node]+1; dfs1(it, node, idx, flag); } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; for(int i = 0; i < m; i++) { int a, b; cin >> a >> b; adj[a].push_back({b, i, 1}); adj[b].push_back({a, i, -1}); } for(int i = 1; i <= n; i++) { p[i] = -1; } dfs(1, 0); for(int i = 1; i <= n; i++) { int par = get(i); for(auto [it, idx, flag] : adj[i]) { int now = get(it); if(now != par) { adj1[now].push_back({par, idx, -flag}); adj1[par].push_back({now, idx, flag}); } } } for(int i = ) dfs1(get(1), 0); int p; cin >> p; while(p--) { int a, b; cin >> a >> b; int p_a = get(a), p_b = get(b); /*if(p_a != p_b) { while(dep[p_a] > dep[p_b]) { if(p_a == 0) break; auto now = par[p_a]; if(now[2] == -1) ans[now[1]] = 1; else ans[now[1]] = 2; p_a = now[0]; } while(dep[p_a] < dep[p_b]) { if(p_b == 0) break; auto now = par[p_b]; if(now[2] == 1) ans[now[1]] = 2; else ans[now[1]] = 1; p_b = now[0]; } while(p_a != p_b) { if(p_a == 0 || p_b == 0) break; auto now1 = par[p_a], now2 = par[p_b]; if(now1[2] == -1) ans[now1[1]] = 1; else ans[now1[1]] = 2; if(now2[2] == -1) ans[now2[1]] = 2; else ans[now2[1]] = 1; p_a = now1[0]; p_b = now2[0]; } }*/ } for(int i = 0; i < m; i++) { if(ans[i] == 0) cout << 'B'; else if(ans[i] == 1) cout << 'L'; else cout << 'R'; } return 0; }

Compilation message (stderr)

oneway.cpp: In function 'int dfs(int, int, int)':
oneway.cpp:49:1: warning: no return statement in function returning non-void [-Wreturn-type]
   49 | }
      | ^
oneway.cpp: In function 'int main()':
oneway.cpp:86:17: error: expected primary-expression before ')' token
   86 |     for(int i = )
      |                 ^
oneway.cpp:88:10: error: expected initializer before ';' token
   88 |     int p;
      |          ^
oneway.cpp:89:13: error: expected ')' before ';' token
   89 |     cin >> p;
      |             ^
      |             )
oneway.cpp:86:8: note: to match this '('
   86 |     for(int i = )
      |        ^
oneway.cpp:90:11: error: lvalue required as decrement operand
   90 |     while(p--) {
      |           ^