codeli @ 2022-08-12 22:36:28
#include <bits/stdc++.h>
using namespace std;
const int MaxN = 1000010;
int p[MaxN];
int find(int x) {
if (p[x] != x) find(p[x]);
return p[x];
}
int main() {
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
p[i] = i;
}
while (m--) {
int x, y, z;
cin >> x >> y >> z;
if (x == 1) {
p[find(y)] = find(z);
} else {
if (find(y) == find(z))
cout << "Y" << endl;
else
cout << "N" << endl;
}
}
return 0;
}
by stupidman1 @ 2022-08-12 23:00:30
虽然但是,这题N最大值不是只有10000吗
by char_cha_ch @ 2022-08-12 23:24:28
@psyqin find函数错了
by char_cha_ch @ 2022-08-12 23:26:56
#include <bits/stdc++.h>
using namespace std;
const int MaxN = 1000010;
int p[MaxN];
int find(int x) {
if (p[x] != x) return p[x] = find(p[x]);
return x;
}
int main() {
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
p[i] = i;
}
while (m--) {
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
if (x == 1) {
p[find(y)] = find(z);
} else {
if (find(y) == find(z))
cout << "Y" << endl;
else
cout << "N" << endl;
}
}
return 0;
}
@psyqin
by codeli @ 2022-08-13 11:28:31
@stupidman1 开大一点应该没事吧(
by codeli @ 2022-08-13 11:29:20
@kirihara233 谢谢大佬!确实是find错了
#include <iostream>
using namespace std;
const int N = 100010;
int p[N];
int find(int x) {
if (p[x] != x) p[x] = find(p[x]);
return p[x];
}
int main() {
int n, m;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) p[i] = i;
while (m--) {
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
if (x == 1) {
p[find(y)] = find(z);
} else {
if (find(y) == find(z))
cout << "Y" << endl;
else
cout << "N" << endl;
}
}
return 0;
}
by Saraphines @ 2023-07-25 11:03:15
cpp
#include<bits/stdc++.h>
using namespace std;
int pre[10010];
int find(int x) {
if(pre[x] == x)return x;
return pre[x] = find(pre[x]);
}
void join(int x, int y) {
int fx = pre[x];
int fy = pre[y];
if(fx != fy){
pre[fy] = fx;
}
}
int main() {
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
pre[i] = i;
}
for (int i = 0; i < m; i++) {
int op, a, b;
cin >> op >> a >> b;
if(op == 1){
join(a, b);
}
else{
if(find(a) == find(b)){
cout<<"Y"<<endl;
}
else{
cout<<"N" <<endl;
}
}
}
}