Submission #1341329

#TimeUsernameProblemLanguageResultExecution timeMemory
1341329ezzzayColors (RMI18_colors)C++20
7 / 100
190 ms544 KiB
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define int long long
const int N=3e5+5;
int x[N],y[N];
vector<int>v[N];
bool fun(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>x[i];
	for(int i=1;i<=n;i++)cin>>y[i];
	for(int i=1;i<=n;i++)v[i].clear();
	for(int i=0;i<m;i++){
		int a,b;
		cin>>a>>b;
		v[a].pb(b);
		v[b].pb(a);
	}
	vector<pair<int,int>>vc;
	for(int i=1;i<=n;i++){
		vc.pb({x[i],i});
	}
	vector<bool>vis(n+19);
	sort(vc.begin(),vc.end());
	while(!vc.empty()){
		int A=vc.back().ss;
		int X=vc.back().ff;
		vc.pop_back();
		if(vis[A])continue;
		priority_queue<pair<int,int>>q;
		q.push({-X,A});
		vis[A]=1;

		while(!q.empty()){
			int p=-q.top().ff;
			int a=q.top().ss;
			q.pop();
			for(auto b:v[a]){
				if(y[b]<=p and x[b]>p){
					x[b]=p;
					vis[b]=1;
					q.push({-x[b],b});
				}
				else if(vis[b]==0){
					vis[b]=1;
					q.push({-x[b],b});
				}
			}
		}
	}
	for(int i=1;i<=n;i++)if(y[i]!=x[i])return 0;
	return 1;
}
signed main(){
	int t;
	cin>>t;
	while(t--)cout<<fun()<<endl;
}
#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...