Submission #2215116


Source Code Expand

#include<iostream>
#include<utility>
#include<map>
using namespace std;

long root(long x,long *uf){
    //cout << "x : " << x <<  "  uf : " << uf[x] << "\n";
    if(uf[x]==x){
        return x;
    }
    else{
        return uf[x] = root(uf[x],uf);
    }
}

void ufmerge(long x,long y,long *uf,long *rank_uf){
    x=root(x,uf);
    y=root(y,uf);
    if(x==y){
        return;
    }
    else{
        if(rank_uf[x]<rank_uf[y]){
            uf[x]=y;
        }
        else{
            uf[y]=x;
            if(rank_uf[x]==rank_uf[y]) rank_uf[x]++;
        }
    }
}

int main(){
    long N,K,L;
    long p,q,r,s;
    long road[200002];
    long rank_road[200002];
    long rail[200002];
    long rank_rail[200002];
    map<pair<long,long>,long> mp_count;
    
    cin >> N >> K >> L;
    for(long i=0;i<=N;i++){
        road[i]=i;
        rank_road[i]=1;
        rail[i]=i;
        rank_rail[i]=1;
    }

    for(long i=0;i<K;i++){
        cin >> p >> q;
        ufmerge(p,q,road,rank_road);
    }

    for(long i=0;i<L;i++){
        cin >> r >> s;
        ufmerge(r,s,rail,rank_rail);
    }

    for(long i=1;i<=N;i++){
        root(i,road);
        root(i,rail);
    }

    for(long i=1;i<=N;i++){
        pair<long,long> p_temp=make_pair(road[i],rail[i]);
        auto itr = mp_count.find(p_temp);
        if(itr != mp_count.end()){
            mp_count[p_temp]++;
        }
        else{
            mp_count[p_temp]=1;
        }
    }

    for(long i=1;i<=N;i++){
        if(i!=1) cout << " ";
        pair<long,long> p_temp=make_pair(road[i],rail[i]);
        cout << mp_count[p_temp];
    }
    cout << "\n";
    
    return 0;
}

Submission Info

Submission Time
Task D - Connectivity
User cross32768
Language C++14 (GCC 5.4.1)
Score 400
Code Size 1718 Byte
Status AC
Exec Time 276 ms
Memory 18304 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 2 ms 4352 KB
subtask0_1.txt AC 2 ms 6400 KB
subtask0_2.txt AC 2 ms 4352 KB
subtask1_0.txt AC 84 ms 4352 KB
subtask1_1.txt AC 276 ms 18304 KB
subtask1_10.txt AC 89 ms 4352 KB
subtask1_11.txt AC 251 ms 16512 KB
subtask1_12.txt AC 154 ms 16128 KB
subtask1_13.txt AC 161 ms 17280 KB
subtask1_14.txt AC 174 ms 13440 KB
subtask1_2.txt AC 130 ms 13440 KB
subtask1_3.txt AC 165 ms 17280 KB
subtask1_4.txt AC 178 ms 14336 KB
subtask1_5.txt AC 91 ms 4352 KB
subtask1_6.txt AC 240 ms 15744 KB
subtask1_7.txt AC 153 ms 17408 KB
subtask1_8.txt AC 173 ms 17408 KB
subtask1_9.txt AC 164 ms 11008 KB