Submission

Status:

(PPPPPP)(PPPPPP)(PPPPPP)(PPPPPPPP)(PPPPPP)(PPPPPPPPPPPPP)

Subtask/Task Score:

{13/13}{11/11}{10/10}{16/16}{18/18}{32/32}

Score: 100

User: qweqwe

Problemset: Tech Sprites

Language: cpp

Time: 1.288 second

Submitted On: 2026-03-25 18:49:25

#include <bits/stdc++.h>
#define qweqwe cin.tie(0)->sync_with_stdio(0)
using namespace std;
using ll = long long;
using pii = pair<ll,ll>;
using db = long double;

vector<int> parent(1000001);
vector<vector<int>> graph(1000001);

int find(int n){
	if (parent[n]==n) return n;
	return parent[n]=find(parent[n]);
}

int main(){
	qweqwe;
	int n,m;cin >> n >> m;
	parent.resize(n+1);
	iota(parent.begin(),parent.end(),0);
	vector<pii> arr(n+1);
	
	for (int i=1;i<=n;i++){
		cin >> arr[i].first >> arr[i].second;
	}
	
	for (int i=0;i<m;i++){
		int u,v;cin >> u >> v;
		graph[u].push_back(v);
		graph[v].push_back(u);
	}
	/*
	unordered_set<int> u;
	for (int i=1;i<=n;i++){
		u.insert(parent[i]);
	}cout << u.size()-1;
	*/
	
	int mn=0;
	vector<bool> vis(1000001,0);
	vector<pair<pii,pii>> wow;
	
	for (int i=1;i<=n;i++){
		if (vis[i]) continue;
		queue<int> q;
		vector<pii> mambo;
		q.push(i);
		
		//cout << i.first << " " << i.second.first.first << " " << i.second.first.second << " " << i.second.second.first << " " << i.second.second.second << "\n";
		
		while (!q.empty()){
			int cur=q.front();q.pop();
			mambo.push_back(arr[cur]);
			
			//if (u.count(cur)) continue;
			//u.insert(cur);
			
			//cout << i.first << " " << cur << "\n";
			
			for (int j:graph[cur]){
				if (vis[j]) continue;
				vis[j]=1;
				q.push(j);
			}
		}
		sort(mambo.begin(),mambo.end());
		
		pii mn=mambo[0],mx=mambo[mambo.size()-1];
		wow.push_back({mn,mx});
	}
	sort(wow.begin(),wow.end());
	pii cur = wow[0].second;
	
	int cnt=0;
	for (int i=1;i<wow.size();i++){
		
		if (wow[i].first < cur){
			cnt++;
		}cur=max(cur,wow[i].second);
	}cout << cnt;
	
	/*
	for (pair<int,vector<pii>> i:pos){
		cout << i.first << "\n";
		for (pii j:i.second){
			cout << j.first << " " << j.second << '\n';
		}cout << "\n--------------\n";
	}
	*/
	
	
	return 0;
}