思路:
floyd模板题。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct node{
double x,y;
}a[110];
double g[110][110];
bool vis[110][110];
const double inf = 0x3f3f3f3f;
void floyd(int n)
{
for(int k = 1; k <= n; k++)
{
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
g[i][j] = min(g[i][j], g[i][k]+g[k][j]);
}
}
}
}
int main()
{
int n;
cin>>n;
for(int i = 1; i <= n; i++)
{
cin>>a[i].x>>a[i].y;
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
g[i][j] = i==j?0:inf;
}
}
int m;
cin>>m;
for(int i = 1; i <= m; i++)
{
int x,y;
cin>>x>>y;
vis[x][y] = vis[y][x] = true;
g[x][y] = g[y][x] = (double)sqrt((double)pow(a[x].x-a[y].x,2)+(double)pow(a[y].y-a[x].y,2));
// cout<<g[x][y]<<endl;
}
floyd(n);
int s,t;
cin>>s>>t;
printf("%0.2lf\n",g[t][s]);
}