728x90
반응형
https://www.acmicpc.net/problem/7511
분리집합 구현만 해주면 되는 아주 간단한 문제이다.
다른 부분을 고려할 필요없이 분리집합 구현만 해주면 되기 때문에 언급할 것이 없다,,
#include <iostream>
#include <queue>
#include <vector>
#include <stack>
#include <string>
#include <cstring>
#include <sstream>
#include <set>
#include <unordered_set>
#include <map>
#include <algorithm>
#include <cmath>
#include <ctime>
#define CUNLINK ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
#define ENDL cout << endl
#define ll long long
#define ull unsigned long long
#define INF 18549876543
#define Mod 1000000009
#define endl '\n'
#define pil pair<int,int>
using namespace std;
int n, m, k;
int parent[1000001];
int getParent(int x) {
if (x == parent[x]) return x;
return parent[x] = getParent(parent[x]);
}
void Union(int a, int b) {
a = getParent(a);
b = getParent(b);
if (a < b) parent[b] = a;
else parent[a] = b;
}
int isLink(int a, int b) {
if (getParent(a) == getParent(b)) return 1;
return 0;
}
int main() {
CUNLINK;
int testCase;
cin >> testCase;
for(int T = 1;T<=testCase;T++) {
cin >> n;
cin >> m;
for (int i = 0; i < n; i++) parent[i] = i;
for (int i = 0; i < m; i++) {
int a, b;
cin >> a >> b;
Union(a, b);
}
cin >> k;
cout << "Scenario " << T << ":" << endl;
for (int i = 0; i < k; i++) {
int node_1, node_2;
cin >> node_1 >> node_2;
cout << isLink(node_1, node_2) << endl;
}
ENDL;
}
return 0;
}
728x90
반응형
'BOJ > 분리 집합' 카테고리의 다른 글
[C/C++] 백준 - 16562번 : 친구비 (0) | 2021.08.24 |
---|