lucy2012 @ 2024-07-15 17:18:51
以逝世。MLE。
#include<bits/stdc++.h>
using namespace std;
int n,m,f[10010];
int find(int x){
if(f[x]!=x)
return f[x]=find(f[x]);
}
void toger(int a,int b){
int ba=find(a),bb=find(b);
if(ba==bb)
return;
f[a]=bb;
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
f[i]=i;
}
for(int i=1;i<=m;i++){
int z,x,y;
cin>>z>>x>>y;
if(z==1){
toger(x,y);
}else{
int bx=find(x),by=find(y);
if(bx==by)
cout<<"Y"<<endl;
else
cout<<"N"<<endl;
}
}
return 0;
}
by E_M_T @ 2024-07-15 17:20:14
@lucy2012 《f[a]=bb》
by xuchuhan @ 2024-07-15 17:22:18
@lucy2012
find函数改为:
int find(int x){
if(f[x]!=x)
return f[x]=find(f[x]);
return x;
}
toger函数中f[a]=bb;
改为f[ba]=bb;
by lzm0107 @ 2024-07-15 17:22:36
@lucy2012 find在写什么
by lucy2012 @ 2024-07-15 17:25:59
@xuchuhan 20分辣。 @E_M_T 这个哪里错啦?QwQ @lzm0107 我不知道。。
by E_M_T @ 2024-07-15 17:26:47
@lucy2012 f[ba]=bb。
哥们你到底学过并查集吗。/jy
by xuchuhan @ 2024-07-15 17:27:30
@lucy2012 应该改了这两个地方就A了呀
by King_and_Grey @ 2024-07-15 17:30:04
@lucy2012
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,f[10010];
int p1,p2,p3;
int find(int k){
if(f[k] == k){
return k;
}
return f[k] = find(f[k]);
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin >> n >> m;
for(int i = 1;i <= n;i++)
f[i] = i;
for(int i = 1;i <= m;i++){
cin >> p1 >> p2 >> p3;
if(p1 == 1){
f[find(p2)] = find(p3);
}else{
if(find(p2) == find(p3)){
cout << "Y\n";
}else{
cout << "N\n";
}
}
}
return 0;
}
你到底学过并查集吗,哥们?
by lucy2012 @ 2024-07-15 17:30:32
@E_M_T 额,刚学玩。。 @xuchuhan 以ac
by lucy2012 @ 2024-07-15 17:31:40
@greyandking 刚学完有点不熟练,虽然已经练了一题但还是很菜啦。。我已经调好了。