floyd算法:用来求结点间的最小路径;(一般题目给的结点数不超过500个才用此法,INF不宜取过大)
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j)d[i][j]=0;
else if(a[i][j]d[i][j]=a[i][j];
else d[i][j]=Inf;
}
}
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
}
}
}
用Floyd来判断两个点之间有没有路径(传递闭包)
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
d[i][j]=d[i][j]|(d[i][k]&&d[k][j]);
}
}
}