Submission #891071

# Submission time Handle Problem Language Result Execution time Memory
891071 2023-12-22T07:17:57 Z Minbaev Jail (JOI22_jail) C++17
0 / 100
6 ms 19036 KB
	#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});
		}
		
		if(m>=6){
			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";
		}
		else{
			
			sort(all(g));
			
			ordered_set st;
			map<int,int>mp;
			for(auto to:g){
				st.insert(to.f);
				mp[to.f]++;
			}
			bool flag = true;
			for(int i = m - 1;i>=0;i--){
				int cnt = st.order_of_key(g[i].s);
				int cont = st.order_of_key(g[i].f);
				
				int val = 0;
				if(g[i].f>=g[i].s)val = cont - cnt - 1;
				else val = cnt - cont - 1;
				if(val<=0){
					auto x = st.find_by_order(cont);
					st.erase(x);
					mp[g[i].f]--;
					if(mp[g[i].f]>0)st.insert(g[i].f);
					if(mp[g[i].s]==0)
					st.insert(g[i].s);
					mp[g[i].s]++;
				}
				else {
					flag = false;
					break;
				}
				
				
			}
			if(flag)cout<<"Yes\n";
			else 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

jail.cpp: In function 'void solve()':
jail.cpp:47:11: warning: unused variable 'k' [-Wunused-variable]
   47 |   int n,m,k;
      |           ^
# Verdict Execution time Memory Grader output
1 Correct 5 ms 19032 KB Output is correct
2 Correct 6 ms 19032 KB Output is correct
3 Incorrect 5 ms 19036 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 19036 KB Output is correct
2 Incorrect 5 ms 19036 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 19036 KB Output is correct
2 Incorrect 5 ms 19036 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 19036 KB Output is correct
2 Incorrect 5 ms 19036 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 19036 KB Output is correct
2 Incorrect 5 ms 19036 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 19032 KB Output is correct
2 Correct 5 ms 19036 KB Output is correct
3 Correct 5 ms 19036 KB Output is correct
4 Incorrect 5 ms 19036 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 19032 KB Output is correct
2 Correct 6 ms 19032 KB Output is correct
3 Incorrect 5 ms 19036 KB Output isn't correct
4 Halted 0 ms 0 KB -