Submission #2214841


Source Code Expand

#include<bits/stdc++.h>
using namespace std;

#define rep(i,n) for(int i=0,i##_len=(n);i<i##_len;i++)
#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define ROF(i,a,b) for(int i=(a)-1;i>=(b);i--)
#define all(a) (a).begin(),(a).end()
#define rall(a) (a).rbegin(),(a).rend() //sortで大きい順
#define UNIQUE(v) v.erase(unique(all(v)),v.end())
#define SUM(a) accumulate(all(a),0)
#define pb push_back
#define fst first
#define snd second
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<string> vs;
typedef pair<int,int> pii;
typedef long long ll;

struct UnionFind{
  vi data;

  UnionFind(int size){
    data.resize(size,-1);
    //rep(i, size) data[i] = -1;
  }

  bool unite(int x,int y){
    x = root(x);
    y = root(y);
    if(x != y){
      if(data[y] < data[x]) swap(x,y);
      data[x] += data[y];
      data[y] = x;
    }
    return x != y;
  }

  bool find(int x, int y){
    return root(x) == root(y);
  }

  int root(int x){
    return data[x] < 0 ? x : data[x] = root(data[x]);
  }

  int size(int x){
    return -data[root(x)];
  }

  void print(){
    cout << "i :\t";
    rep(i, data.size()) cout << i << "\t";
    cout << endl;
    cout << "data :\t";
    rep(i, data.size()) cout << root(i) << "\t";
    cout << endl;
  }
};

main(){
  int n,k,l; cin >> n >> k >> l;
  
  struct UnionFind a(n), b(n);

  rep(i,k){
    int p,q; cin >> p >> q;
    a.unite(p-1,q-1);
  }

  rep(i,l){
    int r,s; cin >> r >> s;
    b.unite(r-1,s-1);
  }
  
  //a.print();
  //b.print();

  map<pii,int> mp;
  rep(i,n){
    mp[pii(a.root(i),b.root(i))]++;
  }

  rep(i,n){
    cout << mp[pii(a.root(i),b.root(i))];
    if(i == n-1) cout << endl;
    else cout << " ";
  }
}

Submission Info

Submission Time
Task D - Connectivity
User kimitsu_emt
Language C++14 (GCC 5.4.1)
Score 400
Code Size 1773 Byte
Status AC
Exec Time 216 ms
Memory 13568 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 18
Set Name Test Cases
Sample subtask0_0.txt, subtask0_1.txt, subtask0_2.txt
All subtask0_0.txt, subtask0_1.txt, subtask0_2.txt, subtask1_0.txt, subtask1_1.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_2.txt, subtask1_3.txt, subtask1_4.txt, subtask1_5.txt, subtask1_6.txt, subtask1_7.txt, subtask1_8.txt, subtask1_9.txt
Case Name Status Exec Time Memory
subtask0_0.txt AC 1 ms 256 KB
subtask0_1.txt AC 1 ms 256 KB
subtask0_2.txt AC 1 ms 256 KB
subtask1_0.txt AC 84 ms 256 KB
subtask1_1.txt AC 216 ms 13568 KB
subtask1_10.txt AC 88 ms 256 KB
subtask1_11.txt AC 198 ms 12032 KB
subtask1_12.txt AC 140 ms 11520 KB
subtask1_13.txt AC 151 ms 12672 KB
subtask1_14.txt AC 164 ms 8832 KB
subtask1_2.txt AC 126 ms 8704 KB
subtask1_3.txt AC 157 ms 12544 KB
subtask1_4.txt AC 164 ms 9728 KB
subtask1_5.txt AC 89 ms 256 KB
subtask1_6.txt AC 193 ms 11392 KB
subtask1_7.txt AC 143 ms 12672 KB
subtask1_8.txt AC 163 ms 12672 KB
subtask1_9.txt AC 152 ms 6400 KB