#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<pii> qr[MAX];
int tin[MAX],tout[MAX],timer;
int ans[MAX];
void dfs(int v){
tin[v]=++timer;
for(auto to:g[v]){
dfs(to);
}
tout[v]=timer;
}
bool par(int a,int b){
return (tin[a]<=tin[b]&&tout[b]<=tout[a]);
}
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[f[x].back()].pb({y,++cnt});
}
}
dfs(cur);
for(int i=1;i<=cur;i++){
for(auto [to,id]:qr[i]){
if(par(i,to))ans[id]=1;
}
}
for(int i=1;i<=cnt;i++){
cout<<(ans[i]?"yes":"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... |