Submission #488746

#TimeUsernameProblemLanguageResultExecution timeMemory
488746CSQ31Inside information (BOI21_servers)C++17
2.50 / 100
3564 ms14924 KiB
#include<bits/stdc++.h>
using namespace std;
//sub 1/2 trivial
//sub 3 path of smaller or larger edges
//sub task 4 binary tree can directly traverse the tree since logn height
//sub 5
//sub 6
#define pb push_back
#define fi first
#define se second
#define owo ios_base::sync_with_stdio(0);cin.tie(0);
typedef pair<int,int> pii;
const int MAXN = 3e5;
vector<pii>adj[MAXN];
int cnt = 0,ans = 0;
bool dfs(int v,int u,int tar,int last){
	if(v==tar)return 1;
	bool ok = 0;
	for(pii x:adj[v]){
		if(x.fi==u)continue;
		if(x.se < last)ok = ok|dfs(x.fi,v,tar,x.se);
	}
	return ok;
}
void dfs(int v,int u,int last){
	ans++;
	for(pii x:adj[v]){
		if(x.fi==u)continue;
		if(x.se > last)dfs(x.fi,u,x.se);
	}
	
}
int main()
{
	owo
	int n,k;
	cin>>n>>k;
	for(int i=0;i<n+k-1;i++){
		char c;
		cin>>c;
		if(c=='S'){
			int v,u;
			cin>>v>>u;
			adj[v].pb({u,++cnt});
			adj[u].pb({v,cnt});
		}
		if(c=='Q'){
			int a,d;
			cin>>a>>d;
			if(dfs(a,0,d,1e9))cout<<"yes"<<'\n';
			else cout<<"no"<<'\n';
		}
		if(c=='C'){
			int d;cin>>d;
			cout<<1<<'\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...