SDS ( -> PS)
[6일차] 그래프1 A - 1717: 집합의 표현
왕방토
2022. 1. 10. 14:42
728x90
골드 Ⅳ
#include <iostream>
using namespace std;
int parent[1000001];
int find(int node) {
if (parent[node] == node) return node;
return parent[node] = find(parent[node]);
}
void uni(int node1, int node2) {
parent[find(node1)] = find(node2);
}
int n, m;
int main() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) parent[i] = i;
int cmd, a, b;
while (m--) {
scanf("%d%d%d", &cmd, &a, &b);
if (cmd == 0) uni(a, b);
else {
if (find(a) == find(b)) printf("YES\n");
else printf("NO\n");
}
}
}
Union-find!
노드들과 간선들을 입력받고
노드1과 노드2가 connected 되어있는지 확인하는 알고리즘