不知道为什么输出的是0.00,请指教

//最短路径算法
#include<bits/stdc++.h>
using namespace std;
struct Q{
int x;
int y;
};
Q n1[110];
int main()
{
int n,m;
double m1[110][110];
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>n1[i].x>>n1[i].y;
}
cin>>m;
memset(m1,0x3f,sizeof(m1));
for(int j=1;j<=m;j++)
{
int x1,x2;
cin>>x1>>x2;
m1[x1][x2]=sqrt(pow(double(n1[x1].x-n1[x2].x),2)+pow(double(n1[x1].y-n1[x2].y),2));
m1[x2][x1]=sqrt(pow(double(n1[x1].x-n1[x2].x),2)+pow(double(n1[x1].y-n1[x2].y),2));
}
int s,t;
cin>>s>>t;
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
if((i!=k)&&(i!=j)&&(k!=j)&&m1[i][j]>m1[i][k]+m1[k][j]) m1[i][j]=m1[i][k]+m1[k][j];
}
printf("%0.2lf",m1[s][t]);
return 0;
}