Submission
Status:
(-SSSSS)(-SSSSS)(-SSSSS)(-SSSSSSS)(-SSSSS)(-SSSSSSSSSSSS)
Subtask/Task Score:
{0/13}{0/11}{0/10}{0/16}{0/18}{0/32}
Score: 0
User: qweqwe
Problemset: Tech Sprites
Language: cpp
Time: 0.566 second
Submitted On: 2026-03-25 17:53:13
#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);
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);
for (int i=0;i<n;i++){
cin >> arr[i].first >> arr[i].second;
}
for (int i=0;i<m;i++){
int u,v;cin >> u >> v;
int pu=find(u),pv=find(v);
if (pu!=pv){
parent[pv]=parent[pu];
}
}
unordered_map<int,vector<pii>> pos;
for (int i=1;i<=n;i++){
pos[parent[i]].push_back(arr[i-1]);
}
int mx=0,idx=-1;
for (pair<int,vector<pii>> i:pos){
if (mx < i.second.size()){
mx=i.second.size();idx=i.first;
}
sort(pos[i.first].begin(),pos[i.first].end());
}
int cnt=0;
/*
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";
}
*/
for (pair<int,vector<pii>> i:pos){
if (idx==i.first) continue;
pii t=i.second[0],w=i.second[i.second.size()-1];
if (t.first>pos[idx][pos[idx].size()-1].first ||
(t.first==pos[idx][pos[idx].size()-1].first &&
t.second>=pos[idx][pos[idx].size()-1].second)){
continue;
}else if (w.first<pos[idx][0].first ||
(w.first==pos[idx][0].first &&
w.second>=pos[idx][0].second)){
continue;
}
else cnt++;
}cout << cnt;
return 0;
}