Submission #1217478

#TimeUsernameProblemLanguageResultExecution timeMemory
1217478shenfe1Inside information (BOI21_servers)C++20
48 / 100
1738 ms57772 KiB
#include <bits/stdc++.h> #pragma GCC optimize("Ofast") // #pragma GCC target("avx2") using namespace std; #define ll long long #define ld long double #define pb push_back #define sz(s) (int)s.size() #define all(v) v.begin(),v.end() #define pii pair<int,int> #define ull unsigned ll // #define int ll void chmin(int &x,int y){x=min(x,y);} const int MAX=6e5+10; const int mod=1e9+7; // const int inf=1e18; int n,q; vector<int> f[MAX]; vector<int> g[MAX]; vector<array<int,3>> qr[MAX]; bool is[MAX]; int ans[MAX]; int use[MAX]; vector<int> top; void dfs(int v){ use[v]=1; for(auto to:g[v]){ if(!use[to])dfs(to); } top.pb(v); } ull dp[MAX]; void solve(){ cin>>n>>q; for(int i=1;i<=n;i++){ f[i].pb(i); } int cur=n; int cnt=0; for(int T=1;T<=q+n-1;T++){ char c; int x,y; cin>>c>>x>>y; if(c=='S'){ cur++; g[cur].pb(f[x].back()); g[cur].pb(f[y].back()); f[x].pb(cur); f[y].pb(cur); } else{ qr[(y-1)/64].pb({f[x].back(),y,++cnt}); } } for(int i=1;i<=cur;i++){ if(!use[i])dfs(i); } for(int l=1;l<=n;l+=64){ for(int v:top){ if(l<=v&&v<min(n+1,l+64)){ dp[v]=(1ull<<(v-l)); } else{ dp[v]=0; for(auto to:g[v]){ dp[v]|=dp[to]; } } } for(auto [v,to,id]:qr[l/64]){ if((dp[v]>>(to-l)&1))ans[id]=1; } } for(int i=1;i<=cnt;i++){ if(ans[i])cout<<"yes\n"; else cout<<"no\n"; } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); long double T=clock(); int t=1; // cin>>t; while(t--)solve(); // cerr<<"Runtime: "<<(clock()-T)/CLOCKS_PER_SEC<<"\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...