(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #1119331

#TimeUsernameProblemLanguageResultExecution timeMemory
1119331imarnOne-Way Streets (CEOI17_oneway)C++14
0 / 100
44 ms50256 KiB
#include<bits/stdc++.h> #define ll long long #define pii pair<int,int> #define pll pair<ll,ll> #define plx pair<ll,int> #define f first #define s second #define pb push_back #define all(x) x.begin(),x.end() #define szz(r) (ll)r.size() #define vi vector<int> #define vvi vector<vi> #define pp pair<ll,int> #define ub(x,i) upper_bound(all(x),i)-x.begin() using namespace std; const int mxn=3e5+5; vector<pair<int,pii>>g[mxn],gr[mxn]; pii rd[mxn]; int ans[mxn]{0}; int di[mxn]{0},lo[mxn]{0},cur=0; bool vis[mxn]{0}; int id[mxn]{0},cc=1; stack<int>st; vector<int>qr[mxn]; map<int,int>mp[2][mxn]; void dfs(int u,int rd){ di[u]=lo[u]=++cur;vis[u]=1; st.push(u); for(auto [v,w]:g[u]){ if(w.f==rd)continue; if(!di[v])dfs(v,w.f); if(vis[v])lo[u]=min(lo[u],lo[v]); } if(lo[u]==di[u]){ while(st.top()!=u){ int v=st.top();st.pop(); id[v]=cc;vis[v]=0; }id[u]=cc;cc++;st.pop();vis[u]=0; } } int cn1=0,cn2=0; bool vv[mxn]{0}; void solve(int u,int rd,int xo){ vis[u]=1; for(auto [v,w]:gr[u]){ if(vis[v])continue; solve(v,w.f,w.s); if(mp[0][v].size()+mp[1][v].size()>mp[0][u].size()+mp[1][u].size())swap(mp[0][v],mp[0][u]),swap(mp[1][v],mp[1][u]); for(int i=0;i<2;i++){ for(auto it : mp[i][v]){ if(mp[i^1][u].find(it.f)!=mp[i^1][u].end())mp[i^1][u].erase(it.f); else mp[i][u][it.f]=1; } } } for(auto it : qr[u]){ if(it<0){ if(mp[0][u].find(-it)!=mp[0][u].end())mp[0][u].erase(-it); else mp[1][u][it]=1; } else { if(mp[1][u].find(it)!=mp[1][u].end())mp[1][u].erase(it); else mp[0][u][it]=1; } } if(rd==-1)return; if(mp[0][u].size()==0&&mp[1][u].size()==0)ans[rd]=2; else if(mp[0][u].size()>0)ans[rd]=xo; else if(mp[1][u].size()>0)ans[rd]=xo^1; } int main(){ ios_base::sync_with_stdio(0);cin.tie(0); int n,m;cin>>n>>m; for(int i=0;i<m;i++){ cin>>rd[i].f>>rd[i].s; if(rd[i].f==rd[i].s){ans[i]=2;continue;} g[rd[i].f].pb({rd[i].s,{i,0}});g[rd[i].s].pb({rd[i].f,{i,1}}); } for(int i=1;i<=n;i++){ if(!di[i])dfs(i,-1); } for(int i=1;i<=n;i++){ for(auto [v,w]:g[i]){ if(id[i]==id[v])ans[w.f]=2; else gr[id[i]].pb({id[v],{w.f,w.s}}),gr[id[v]].pb({id[i],{w.f,w.s^1}}); } } int p;cin>>p; for(int i=1;i<=p;i++){ int x,y;cin>>x>>y; if(id[x]==id[y])continue; qr[id[x]].pb(i); qr[id[y]].pb(-i); }memset(vis,0,sizeof vis); for(int i=1;i<=cc;i++){ if(!vis[i])solve(i,-1,-1); } for(int i=0;i<m;i++){ if(ans[i]==2)cout<<'B'; if(ans[i]==1)cout<<'R'; if(ans[i]==0)cout<<'L'; } }

Compilation message (stderr)

oneway.cpp: In function 'void dfs(int, int)':
oneway.cpp:29:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   29 |     for(auto [v,w]:g[u]){
      |              ^
oneway.cpp: In function 'void solve(int, int, int)':
oneway.cpp:45:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   45 |     for(auto [v,w]:gr[u]){
      |              ^
oneway.cpp: In function 'int main()':
oneway.cpp:85:18: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   85 |         for(auto [v,w]:g[i]){
      |                  ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...