Submission #890904

#TimeUsernameProblemLanguageResultExecution timeMemory
890904vjudge1Jail (JOI22_jail)C++17
21 / 100
5068 ms19800 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimize("Ofast,unroll-loops")
#define pii pair<int,int>
using namespace __gnu_pbds;
using namespace std;
#define pb push_back
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define int long long
#define f first
#define s second
#define pii pair<int,int>
template<class T>bool umax(T &a,T b){if(a<b){a=b;return true;}return false;}
template<class T>bool umin(T &a,T b){if(b<a){a=b;return true;}return false;}
typedef tree<int, null_type, less_equal<int>, rb_tree_tag,
	tree_order_statistics_node_update> ordered_set;
const int mod= 1e9 +7;
const int N=1e5*4;

int binpow (int a, int n) {
	if (n == 0)
		return 1;
	if (n % 2 == 1)
		return binpow (a, n-1) * a;
	else {
		int b = binpow (a, n/2);
		return b * b;
	}
}
	vector<int>v[N],pred(N);
	vector<int>col(N),vis(N);
	
	void dfs(int x,int pr){
		vis[x] = 1;
		for(auto to:v[x]){
			if(to==pr||col[to])continue;
			dfs(to,x);
		}
			
	}
	
void solve(){
	
	int n,m,k;
	
	cin>>n;
	
	for(int i = 1;i<=n;i++){
		v[i].clear();
		vis[i] = 0;
		col[i] = 0;
	}
	for(int i = 1;i<n;i++){
		int a,b;
		cin>>a>>b;
		v[a].pb(b);
		v[b].pb(a);
	}
	
	cin>>m;
	
	vector<pii>g;
	for(int i = 0;i<m;i++){
		int a,b;
		cin>>a>>b;
		g.pb({a,b});
	}
	
	vector<int>ind;
	for(int i = 0;i<m;i++)ind.pb(i);

	do
	{
		//~ cout<<1<<endl;
		for(int i = 1;i<=n;i++)col[i] = 0;
		for(auto to:g){
			col[to.f] += 1;
		}
		//~ cout<<1<<endl;
		bool flag = true;
		for(auto to:ind){
			//~ cout<<1<<endl;
			int a = g[to].f;
			int b = g[to].s;
			//~ cout<<to<<endl;
			col[a]--;
			for(int i = 1;i<=n;i++)vis[i] = 0;
			if(col[a]>=1){
				//~ cout<<ind[0]<<"-\n";
				flag = false;
				break;
			}
			//~ if(ind[0]==2&&ind[1]==1)
			//~ cout<<col[b]<<endl;
			dfs(a,-1);
			//~ cout<<to<<endl;
			
			col[b] ++;
			if(vis[b]==0){
				//~ cout<<ind[0]<<"=\n";
				flag = false;
				break;
			}
		}
		if(flag){
			//~ for(auto to:ind)cout<<to<<" ";
			cout<<"Yes\n";
			return;
		}
		
		
	} while (next_permutation(all(ind)));
	
	cout<<"No\n";



}

 signed main()
{
//	freopen("seq.in", "r", stdin);
//  freopen("seq.out", "w", stdout);
	ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL);
	int tt=1;cin>>tt;
	while(tt--)solve();

}
	

Compilation message (stderr)

jail.cpp: In function 'void solve()':
jail.cpp:47:10: warning: unused variable 'k' [-Wunused-variable]
   47 |  int n,m,k;
      |          ^
#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...