๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 4195๋ฒˆ - ์นœ๊ตฌ ๋„คํŠธ์›Œํฌ

by ์•ˆ์ฃผํ˜• 2022. 9. 2.

๋ฌธ์ œ

 

4195๋ฒˆ: ์นœ๊ตฌ ๋„คํŠธ์›Œํฌ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์—๋Š” ์นœ๊ตฌ ๊ด€๊ณ„์˜ ์ˆ˜ F๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, ์ด ๊ฐ’์€ 100,000์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค. ๋‹ค์Œ F๊ฐœ์˜ ์ค„์—๋Š” ์นœ๊ตฌ ๊ด€๊ณ„๊ฐ€ ์ƒ๊ธด ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <unordered_map>
using namespace std;

int N;
unordered_map<string, string> parent;
unordered_map<string, int> connect_cnt;

string find_parent(string x){
    if(x == parent[x]) return x;
    else return parent[x] = find_parent(parent[x]);
}

void union_parent(string a, string b){
    a = find_parent(a);
    b = find_parent(b);
    if(a > b){
        parent[a] = b;
        connect_cnt[b] += connect_cnt[a];
        connect_cnt[a] = 0;
    }
    else{
        parent[b] = a;
        connect_cnt[a] += connect_cnt[b];
        connect_cnt[b] = 0;
    }
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int T; cin>>T;
    while(T--){
        cin>>N;
        
        for(int i=0; i<N; i++){
            string a, b; cin>>a>>b;
            if(connect_cnt[a] == 0 && parent.find(a) == parent.end()){
                connect_cnt[a] = 1;
                parent[a] = a;
            }
            if(connect_cnt[b] == 0 && parent.find(b) == parent.end()){
                connect_cnt[b] = 1;
                parent[b] = b;
            }
            
            if(find_parent(a) != find_parent(b)) union_parent(a, b);
            cout<<connect_cnt[(find_parent(a))]<<'\n';
        }
        parent.clear();
        connect_cnt.clear();
    }
}

 

ํ’€์ด

 

[๋ฐฑ์ค€,c++] 18116๋ฒˆ - ๋กœ๋ด‡ ์กฐ๋ฆฝ

๋ฌธ์ œ 18116๋ฒˆ: ๋กœ๋ด‡ ์กฐ๋ฆฝ ์„ฑ๊ทœ๋Š” ๋กœ๋ด‡์„ ์กฐ๋ฆฝํ•ด์•ผ ํ•œ๋‹ค. ์ƒ์ž ์•ˆ์—๋Š” ์—ฌ๋Ÿฌ ๋กœ๋ด‡์˜ ๋ถ€ํ’ˆ๋“ค์ด ์„ž์—ฌ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์–ด๋–ค ๋ถ€ํ’ˆ์ด ์–ด๋Š ๋กœ๋ด‡์˜ ๋ถ€ํ’ˆ์ธ์ง€ ํ‘œ์‹œ๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค. ํ˜ธ์žฌ๋Š” ์ „์ž๊ณผ๋ผ์„œ ๋‘ ๋ถ€

dkswnkk.tistory.com

์œ„ ๋ฌธ์ œ๋ž‘ ๋™์ผํ•œ๋ฐ ํ•ด์‰ฌ๋ฅผ ์จ์•ผ ํ•œ๋‹ค๋Š” ์ ์—์„œ ํ‹ฐ์–ด๊ฐ€ 2 ์ฐจ์ด ๋‚˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ํฌ๊ฒŒ ๋‹ค๋ฅผ ๊ฑด ์—†๋Š”๋ฐ ๋ง์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ๋…ธ๋“œ๊ฐ€ ๋ช‡ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š”์ง€ ์ฐพ๋Š” ๋ฌธ์ œ์ธ ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. 

์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ด๋†“๊ณ  ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ๋ฅผ ํ†ตํ•ด์„œ ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ํ•ฉ์น  ๋•Œ, ํ•ด๋‹น ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฐฑ์‹ ํ•˜๋Š” ์•„์ด๋””์–ด๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ณง ์ด ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์นœ๊ตฌ ๋„คํŠธ์›Œํฌ์˜ ์ธ์› ์ˆ˜๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋Œ“๊ธ€