Submission #415101

#TimeUsernameProblemLanguageResultExecution timeMemory
415101A_DOne-Way Streets (CEOI17_oneway)C++14
0 / 100
10 ms11344 KiB
#include<bits/stdc++.h> #define int long long #define ii pair<int,int> #define F first #define S second #define du long double using namespace std; const int N=1e5+100; vector<int> g[N],g2[N]; set<int> st[N]; int u[N]; int v[N]; int a[N]; bool vis[N]; int tin[N]; int low[N]; int timer; map<ii,char> mp; map<ii,bool> bridg; map<int,int> mp2; int sz; void dfs2(int v,int p) { vis[v] = true; tin[v] = low[v] = timer++; for (int to : g[v]) { if (to == p) continue; if (vis[to]) { low[v] = min(low[v], tin[to]); } else { dfs2(to, v); low[v] = min(low[v], low[to]); if (low[to] > tin[v]){ bridg[{v, to}]=1; bridg[{to, v}]=1; } } } } void dfs3(int u,int v) { vis[u]=1; mp2[u]=v; for(auto x:g[u]){ if(bridg[{u,x}]){ g2[v].push_back(x); continue; } if(vis[x])continue; dfs3(x,v); } } void dfs(int u,int p) { for(auto x:g2[u]){ if(x==p)continue; dfs(x,u); } for(auto x:g2[u]){ if(x==p)continue; a[u]+=a[x]; if(a[x]==0){ mp[{u,x}]='B'; mp[{x,u}]='B'; } if(a[x]>0){ mp[{u,x}]='L'; mp[{x,u}]='R'; } if(a[x]<0){ mp[{u,x}]='R'; mp[{x,u}]='L'; } } } void solve() { memset(tin,-1,sizeof(tin)); memset(low,-1,sizeof(low)); int n,m; cin>>n>>m; for(int i=1;i<=m;i++){ int a,b; cin>>a>>b; g[a].push_back(b); g[b].push_back(a); u[i]=a; v[i]=b; } for(int i=1;i<=n;i++){ if(vis[i])continue; dfs2(i,i); } memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++){ if(vis[i])continue; dfs3(i,i); } for(int i=1;i<=n;i++){ for(auto x:g2[i]){ st[i].insert(mp2[x]); } g2[i].clear(); for(auto x:st[i]){ g2[i].push_back(x); } } int p; cin>>p; while(p--){ int u,v; cin>>u>>v; a[u]++; a[v]--; } memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++){ int u=mp2[i]; if(vis[u])continue; dfs(u,u); } /* for(int i=1;i<=n;i++){ cout<<mp2[i]<<" "; } cout<<endl; for(int i=1;i<=n;i++){ cout<<i<<" : "; for(auto x:g2[i])cout<<x<<" ";cout<<endl; } */ for(int i=1;i<=m;i++){ if(bridg[{u[i],v[i]}]==0){ cout<<"B"; continue; } int a=mp2[u[i]]; int b=mp2[v[i]]; cout<<mp[{a,b}]; } } main() { int t=1; // cin>>t; while(t--)solve(); }

Compilation message (stderr)

oneway.cpp:145:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
  145 | main()
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...