社区讨论
仔细看了很多遍,这明摆的没什么问题,样例也过了,为什么前三点是WA
P1744采购特价商品参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lo2f19j3
- 此快照首次捕获于
- 2023/10/23 12:46 2 年前
- 此快照最后确认于
- 2023/11/18 21:55 2 年前
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(1);
book[1]=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;
}
求助
回复
共 3 条回复,欢迎继续交流。
正在加载回复...