三个 inf 相加会爆炸!
也就是
for (rint k = 1; k <= n; k++)
{
for (rint i = 1; i <= n; i++)
{
for (rint j = 1; j <= n; j++)
{
if (i != j && j != k && k != i)
{
ans = min(ans, mp[i][k] + mp[k][j] + dis[i][j]);
dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
}
}
}
}
改成
for (rint k = 1; k <= n; k++)
{
for (rint i = 1; i <= n; i++)
{
for (rint j = 1; j <= n; j++)
{
if (i != j && j != k && k != i && mp[i][k] != inf && mp[k][j] != inf && dis[i][j] != inf)
{
ans = min(ans, mp[i][k] + mp[k][j] + dis[i][j]);
}
dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
}
}
}