图论中的环相关内容
并查集求最小环(无向图,出度只能为1):连一条由A指向B的边,更新B的父节点,A到它的父节点的路径长=B到它的父节点的路径长+1,如果有两个点祖先节点相同,那么就可以构成一个环,长度为两个点到祖先节点长度之和+1。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   |  int father(int x) {     if(fa[x]==x) return x;     int cur=fa[x];      int xf=father(fa[x]);      fa[x]=xf;      cnt[x]+=cnt[cur];                return xf; } void unite(int x,int y)  {     int xf=father(x),yf=father(y);     if(xf==yf)         ans=min(ans,cnt[x]+cnt[y]+1);      else         fa[xf]=yf, cnt[x]=cnt[y]+1;  }
 
  | 
 
记忆化搜索求简单链+环