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

[๋ฐฑ์ค€,c++] 20040๋ฒˆ - ์‚ฌ์ดํด ๊ฒŒ์ž„

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

๋ฌธ์ œ

 

20040๋ฒˆ: ์‚ฌ์ดํด ๊ฒŒ์ž„

์‚ฌ์ดํด ๊ฒŒ์ž„์€ ๋‘ ๋ช…์˜ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ๋Œ์•„๊ฐ€๋ฉฐ ์ง„ํ–‰ํ•˜๋Š” ๊ฒŒ์ž„์œผ๋กœ, ์„  ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ํ™€์ˆ˜ ๋ฒˆ์งธ ์ฐจ๋ก€๋ฅผ, ํ›„ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ง์ˆ˜ ๋ฒˆ์งธ ์ฐจ๋ก€๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ๊ฒŒ์ž„ ์‹œ์ž‘ ์‹œ 0 ๋ถ€ํ„ฐ n − 1 ๊นŒ์ง€ ๊ณ ์œ ํ•œ

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
using namespace std;

int parent[500001];

int n, m;

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

void union_parent(int a, int b){
    a = find_parent(a);
    b = find_parent(b);
    
    if(a < b) parent[b] = a;
    else parent[a] = b;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    cin>>n>>m;
    int ans = 0;
    for(int i=1; i<=n; i++) parent[i] = i;
    for(int i=0; i<m; i++){
        int a, b; cin>>a>>b;
        if(find_parent(a) == find_parent(b)){
            ans = i + 1;
            break;
        }
        union_parent(a, b);
    }
    cout<<ans;
    
}

 

ํ’€์ด

์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋‹จ์ˆœํ•˜๊ฒŒ ๊ทธ๋ƒฅ ๋ถ€๋ชจ๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์ดํด์ด ์ƒ๊ธด๋‹ค๋Š” ๋ง์ด๊ธฐ์— ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๊ณ , ๋ถ€๋ชจ๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ๋ถ€๋ชจ๋ฅผ ํ•ฉ์ณ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€