@[caojiaming](/user/775551) 有没有一种可能,起点是点 $s$,而不是点 $1$
by Natori @ 2023-06-19 16:17:23
@[caojiaming](/user/775551) 改完就过了
```cpp
#include <bits/stdc++.h>
using namespace std;
struct edge{
int to;
double w;
};
double distan(int x1,int y1,int x2,int y2)
{
double a1=abs(x1-x2);
double a2=abs(y1-y2);
return sqrt(a1*a1+a2*a2);
}
int n,m,s,t;
int x[110],y[110];
vector<edge> a[110];
double dis[110];
bool book[110];
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&x[i],&y[i]);
}
cin>>m;
for(int i=1;i<=m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
a[u].push_back(edge{v,distan(x[u],y[u],x[v],y[v])});
a[v].push_back(edge{u,distan(x[u],y[u],x[v],y[v])});
}
cin>>s>>t;
for(int i=1;i<s;i++) dis[i]=1e9;
for(int i=s+1;i<=n;i++) dis[i]=1e9;
queue<int> q;
/*这三行*/
q.push(s);
dis[s]=0;
book[s]=1;
/**/
while(!q.empty())
{
int v=q.front();
q.pop();
book[v]=0;
for(int i=0;i<a[v].size();i++)
{
int u=a[v][i].to;
if(dis[u]>dis[v]+a[v][i].w)
{
dis[u]=dis[v]+a[v][i].w;
if(!book[u])
{
book[u]=1;
q.push(u);
}
}
}
}
printf("%.2lf",dis[t]);
return 0;
}
```
by Natori @ 2023-06-19 16:18:40
大佬nb
by sans_001 @ 2023-07-17 11:41:30