Language: C++

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const double EPS = 1e-9;
const int INF = 1e9;
const int MOD = 1e9+7;
const ll LINF = 1e18;
typedef vector<int> vi;
typedef vector<vector<int>> vvi;
typedef vector<vector<ll>> vll;
typedef pair<int, int> pi;
typedef pair<ll, ll> pll;
typedef map<int, int> mi;
typedef set<int> si;
#define VV(T) vector<vector< T > >
#define dump(x)  cout << #x << " = " << (x) << endl
#define YES(n) cout << ((n) ? "YES" : "NO"  ) << endl
#define Yes(n) cout << ((n) ? "Yes" : "No"  ) << endl
#define POSSIBLE(n) cout << ((n) ? "POSSIBLE" : "IMPOSSIBLE"  ) << endl
#define Possible(n) cout << ((n) ? "Possible" : "Impossible"  ) << endl

#define rep(i, n) REP(i, 0, n)                              // 0, 1, ..., n-1
#define REP(i, x, n) for(int i = x; i < n; i++)             // x, x + 1, ..., n-1
#define invrep(i, n) for(int i = (n)-1; i >= 0; i--)        // n-1, n-2, ..., 0
#define invREP(i, x, n) for(int i = (n)-1; i >= (x; i--)    // n-1, n-2, ..., x
#define FOREACH(x,a) for(auto& (x) : (a) )

#define ALL(v) (v).begin() , (v).end()
#define RALL(v) (v).rbegin(), (v).rend()

#define PB push_back

#define COUT(x) cout << (x) << endl
#define VECCIN(x) for(auto&youso_: (x) )cin>>youso_
#define VECCOUT(x) for(auto&youso_: (x) )cout<<youso_<<" ";cout<<endl

template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }

class UnionFind{
    public:
        vector<int> uni;
        UnionFind(int s) : uni(s, -1) { }
 
       //頂点aが所属するグループを調べる
        int root(int a)
        {
            if (uni[a] < 0) return a;
            return uni[a] = root(uni[a]);
        }
    
        //頂点aと頂点bを繋ぐ。もともと同じグループの時falseを返す
        bool connect(int a,int b)
        {
            a = root(a);
            b = root(b);
            if (a == b) return false;
    
            if (uni[a] > uni[b])
            {
                a ^= b;
                b ^= a;
                a ^= b;
            }
    
            uni[a] = uni[a] + uni[b];
            uni[b] = a;
            return true;
        }
    
        //頂点a,bが同じグループであるかを調べる
        bool isConnect(int a,int b)
        {
            return root(a) == root(b);
        }
    
        //頂点aを含むグループの頂点数を調べる
        int size(int a)
        {
            return -uni[root(a)];
        }
    
    };

    


int N, K, L; 
int p[2*10e5], q[2*10e5], r[2*10e5], s[2*10e5];
int a[3*10e5], b[3*10e5];

int main(){
    cin >> N >> K >> L;

    map<pi, int> mp;
    UnionFind ufk(N), ufl(N);
    rep(i, K){
        cin >> p[i] >> q[i];
        p[i]--; q[i]--;
        ufk.connect(p[i], q[i]);
    }
    rep(i, L){
        cin >> r[i] >> s[i];
        r[i]--; s[i]--;
        ufl.connect(r[i], s[i]);
    }
    rep(i, N){
        a[i] = ufk.root(i);
        b[i] = ufl.root(i);
        mp[make_pair(a[i], b[i])]++;
    }
    rep(i, N){
        cout << mp[make_pair(a[i], b[i])] << " \n"[i == N - 1];
    }
}

Compiler output:
a.cc:89:8: error: conversion from 'double' to 'long unsigned int' in a converted constant expression
   89 | int p[2*10e5], q[2*10e5], r[2*10e5], s[2*10e5];
      |       ~^~~~~
a.cc:89:8: error: could not convert '((double)2 * 1.0e+6)' from 'double' to 'long unsigned int'
   89 | int p[2*10e5], q[2*10e5], r[2*10e5], s[2*10e5];
      |       ~^~~~~
      |        |
      |        double
a.cc:89:8: error: size of array 'p' has non-integral type 'double'
a.cc:89:19: error: conversion from 'double' to 'long unsigned int' in a converted constant expression
   89 | int p[2*10e5], q[2*10e5], r[2*10e5], s[2*10e5];
      |                  ~^~~~~
a.cc:89:19: error: could not convert '((double)2 * 1.0e+6)' from 'double' to 'long unsigned int'
   89 | int p[2*10e5], q[2*10e5], r[2*10e5], s[2*10e5];
      |                  ~^~~~~
      |                   |
      |                   double
a.cc:89:19: error: size of array 'q' has non-integral type 'double'
a.cc:89:30: error: conversion from 'double' to 'long unsigned int' in a converted constant expression
   89 | int p[2*10e5], q[2*10e5], r[2*10e5], s[2*10e5];
      |                             ~^~~~~
a.cc:89:30: error: could not convert '((double)2 * 1.0e+6)' from 'double' to 'long unsigned int'
   89 | int p[2*10e5], q[2*10e5], r[2*10e5], s[2*10e5];
      |                             ~^~~~~
      |                              |
      |                              double
a.cc:89:30: error: size of array 'r' has non-integral type 'double'
a.cc:89:41: error: conversion from 'double' to 'long unsigned int' in a converted constant expression
   89 | int p[2*10e5], q[2*10e5], r[2*10e5], s[2*10e5];
      |                                        ~^~~~~
a.cc:89:41: error: could not convert '((double)2 * 1.0e+6)' from 'double' to 'long unsigned int'
   89 | int p[2*10e5], q[2*10e5], r[2*10e5], s[2*10e5];
      |                                        ~^~~~~
      |                                         |
      |                                         double
a.cc:89:41: error: size of array 's' has non-integral type 'double'
a.cc:90:8: error: conversion from 'double' to 'long unsigned int' in a converted constant expression
   90 | int a[3*10e5], b[3*10e5];
      |       ~^~~~~
a.cc:90:8: error: could not convert '((double)3 * 1.0e+6)' from 'double' to 'long unsigned int'
   90 | int a[3*10e5], b[3*10e5];
      |       ~^~~~~
      |        |
      |        double
a.cc:90:8: error: size of array 'a' has non-integral type 'double'
a.cc:90:19: error: conversion from 'double' to 'long unsigned int' in a converted constant expression
   90 | int a[3*10e5], b[3*10e5];
      |                  ~^~~~~
a.cc:90:19: error: could not convert '((double)3 * 1.0e+6)' from 'double' to 'long unsigned int'
   90 | int a[3*10e5], b[3*10e5];
      |                  ~^~~~~
      |                   |
      |                   double
a.cc:90:19: error: size of array 'b' has non-integral type 'double'