답안 #381770

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
381770 2021-03-25T21:20:04 Z MohamedAhmed04 Colors (RMI18_colors) C++14
7 / 100
188 ms 19436 KB
#include <bits/stdc++.h>

using namespace std ;

const int MAX = 2e5 + 10 ;

int a[MAX] , b[MAX] ;
int n , m ;

vector< vector<int> >adj(MAX) ;
vector<int>v[MAX] ;
set<int>s[MAX] ;
int par[MAX] ;

void init()
{
	for(int i = 1 ; i <= n ; ++i)
		par[i] = i , s[i].insert(a[i]) ; 
}

int root(int node)
{
	if(par[node] == node)
		return node ;
	return (par[node] = root(par[node])) ;
}

void Union(int x , int y)
{
	int a = root(x) ;
	int b = root(y) ;
	if(a == b)
		return ;
	if(s[a].size() < s[b].size())
		swap(a , b) ;
	while(s[b].size())
		s[a].insert(*s[b].begin()) , s[b].erase(s[b].begin()) ;
	par[b] = a ;
}

int main()
{
	ios_base::sync_with_stdio(0) ;
	cin.tie(0) ;
	int t ;
	cin>>t ;
	while(t--)
	{
		cin>>n>>m ;
		for(int i = 1 ; i <= n ; ++i)
			adj[i].clear() , v[i].clear() , s[i].clear() ;
		for(int i = 1 ; i <= n ; ++i)
			cin>>a[i] ;
		for(int i = 1 ; i <= n ; ++i)
			cin>>b[i] ;
		for(int i = 0 ; i < m ; ++i)
		{
			int x , y ;
			cin>>x>>y ;
			adj[x].push_back(y) ;
			adj[y].push_back(x) ;
		}
		init() ;
		for(int i = 1 ; i <= n ; ++i)
			v[b[i]].push_back(i) ;
		bool flag = true ;
		for(int i = 1 ; i <= n ; ++i)
		{
			for(auto &node : v[i])
			{
				for(auto &child : adj[node])
				{
					if(b[child] <= b[node])
						Union(node , child) ;
				}
			}
			for(auto &node : v[i])
			{
				int x = root(node) ;
				if(s[x].find(i) == s[x].end() || a[node] < b[node])
					flag = false ;
			}
		}
		cout<<flag<<"\n" ;
	}
	return 0 ;
}		
# 결과 실행 시간 메모리 Grader output
1 Incorrect 81 ms 19180 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 68 ms 19180 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 96 ms 19180 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 96 ms 19180 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 81 ms 19180 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 188 ms 19436 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 39 ms 19180 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 81 ms 19180 KB Output isn't correct
2 Halted 0 ms 0 KB -