Floyd可以判断有向环,并查集只能判断无向环。
void Floyed(){
for(int k=0;k<n;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(d[i][j]<inf&&d[k][j]<inf)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
}
如果只关心是否通路,而不关心长度,可以改为:
d[i][j]=d[i][j]||(d[i][k]&&d[k][j]);