Submission #405683

#TimeUsernameProblemLanguageResultExecution timeMemory
405683HazemOne-Way Streets (CEOI17_oneway)C++14
100 / 100
559 ms58520 KiB
#include <bits/stdc++.h> using namespace std; #define LL long long #define F first #define S second #define pii pair<int,int> #define piii pair<pair<int,int>,int> const int N = 3e5+10; const int M = 3e2+10; const LL INF = 1e9; const LL LINF = 2e18; const LL MOD = 1e9+7; const double PI = 3.141592653589793; map<pair<int,int>,char>mp; map<pii,int>mp2; vector<int>adj[N],adj2[N]; vector<pii>edges; int val[N],vis[N],dp[N]; void dfs(int i,int pre){ for(auto x:adj[i]){ if(vis[x]){ if(x!=pre) mp[{i,x}] = mp[{x,i}] = 'B'; continue; } vis[x] = vis[i]+1; adj2[i].push_back(x); adj2[x].push_back(i); dfs(x,i); } for(auto x:adj[i]){ if(x==pre)continue; if(vis[x]<vis[i]){ dp[i]++; continue; } if(vis[x]>vis[i]+1){ dp[i]--; continue; } if(dp[x]||mp2[{i,x}]>1) mp[{i,x}] = mp[{x,i}] = 'B'; dp[i] += dp[x]; } } void dfs2(int i,int pre){ for(auto x:adj2[i]){ if(x==pre)continue; dfs2(x,i); val[i] += val[x]; if(dp[x]||mp2[{i,x}]>1)continue; if(val[x]<0) mp[{i,x}] = 'R',mp[{x,i}] = 'L'; else if(val[x]>0) mp[{i,x}] = 'L',mp[{x,i}] = 'R'; else mp[{i,x}] = mp[{x,i}] = 'B'; } } int main(){ //freopen("out.txt","w",stdout); int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ int u,v; scanf("%d%d",&u,&v); edges.push_back({u,v}); mp2[{u,v}]++; mp2[{v,u}]++; if(mp2[{u,v}]>1) continue; adj[u].push_back(v); adj[v].push_back(u); } int q; scanf("%d",&q); while(q--){ int u,v; scanf("%d%d",&u,&v); val[u]++; val[v]--; } for(int i=1;i<=n;i++){ if(vis[i])continue; vis[i] = 1; dfs(i,0); dfs2(i,0); } for(auto x:edges) cout<<mp[x]; }

Compilation message (stderr)

oneway.cpp: In function 'int main()':
oneway.cpp:86:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   86 |     scanf("%d%d",&n,&m);
      |     ~~~~~^~~~~~~~~~~~~~
oneway.cpp:91:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   91 |         scanf("%d%d",&u,&v);
      |         ~~~~~^~~~~~~~~~~~~~
oneway.cpp:105:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  105 |     scanf("%d",&q);
      |     ~~~~~^~~~~~~~~
oneway.cpp:109:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  109 |         scanf("%d%d",&u,&v);
      |         ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...