RT,我的代码并查集写错过了,请求谷友帮忙看下是误打误撞过了还是数据过水
并查集有关代码如下,完整代码扔到一楼:
int fa[maxn];
inline int getfa(const int x){return fa[x]=(fa[x]==x?x:getfa(fa[x]));}
for(int i=1;i<=n;i++)fa[i]=i;
for(int i=1,x,y;i<=f;i++)cin>>x>>y,fa[getfa(x)]=y;
很明显的是,合并有着致命的bug:若fa[y]=getfa(x),那么将直接死循环。