并查集是一个较为基础的数据结构,然而我在洛谷上不明不白的AC了之后(代码是错的但是却AC了),在蓝桥杯就行不通了。错误点如下
//原先错误的代码
int f[100];
int find(int x){
if(f[x]==x)return x;
else f[x]= find(f[x]);
}
//改正后的代码
int f[100];
int find(int x){
if(f[x]==x)return x;
else return f[x]= find(f[x]);
}
//展开下部分应该是
else{
f[x]= find(f[x]);
return f[x];
}
//因为if已经有了返回值,所以else可以省略,故正确代码
int f[100];
int find(int x){
if(f[x]==x)return x;
return f[x]= find(f[x]);
}
因为这个实在是太简单了所以建议直接去看洛谷并查集的模板题的题解%%%%%然而我还是错了orz
传送门 【模板】并查集 - 洛谷