[문제 링크] : https://www.acmicpc.net/problem/20040
#include <iostream>
#include <vector>
using namespace std;
int N, M;
int Arr[500001];
int Ans;
int find(int n){
if(Arr[n] == n){
return n;
}
else{
return Arr[n] = find(Arr[n]);
}
}
bool solve(int a, int b){
a = find(a);
b = find(b);
if(a == b){
return true;
}
else{
Arr[a] = b;
return false;
}
}
int main(){
cin >> N >> M;
for(int i=0; i<N; i++){
Arr[i] = i;
}
int a, b;
for(int i=1; i<=M; i++){
cin >> a >> b;
if(solve(a, b) == true){
Ans = i;
break;
}
}
if(Ans == 0){
cout << 0 << "\n";
}
else{
cout << Ans << "\n";
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[알고리즘] 백준 27327 - 時間 (Hour) (C++) (0) | 2025.01.17 |
---|---|
[알고리즘] 백준 2473 - 세 용액 (C++) (0) | 2025.01.16 |
[알고리즘] 백준 2143 - 두 배열의 합 (C++) (0) | 2025.01.14 |
[알고리즘] 백준 5557 - 1학년 (C++) (0) | 2025.01.13 |
[알고리즘] 백준 2631 - 줄세우기 (C++) (0) | 2025.01.12 |