#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |