奥赛一本通水题求助(最短路dj)
  • 板块学术版
  • 楼主hnoi
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/5/5 22:14
  • 上次更新2023/10/23 16:33:23
查看原帖
奥赛一本通水题求助(最短路dj)
601142
hnoi楼主2023/5/5 22:14
#include<bits/stdc++.h>
using namespace std;
const int maxn=105;
const int inf=0x3f3f3f3f;
int x[maxn],y[maxn];
struct node{
	int v;
	double w;
};
vector<node> E[maxn];
int n,m,s,t;
double dis[maxn];
bool vis[maxn];
void dijkstra(){
	memset(dis,0x43,sizeof(dis));
	dis[s]=0;
	for(int k=1;k<=n;k++){
		int u=0;
		for(int i=1;i<=n;++i){
			if(vis[i]==false&&(u==0||dis[i]<dis[u])){
			u=i;	
			}
			vis[u]=true;	
			for(int i=0;i<E[u].size();i++){
				int v=E[u][i].v;
				double g=E[u][i].w;
				if(vis[v]==false&&dis[v]>dis[u]+g){
				dis[v]=dis[u]+g;
				}
			}	
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>x[i]>>y[i];
	}
	cin>>m;
	int k,j;
	for(int i=1;i<=m;++i){
		cin>>k>>j;
		double dd=sqrt((x[k]-x[j])*(x[k]-x[j])+(y[k]-y[j])*(y[k]-y[j]));
		E[k].push_back({j,dd});
		E[j].push_back({k,dd});
	}
		cin>>s>>t;
		dijkstra();
		printf("%.2lf",dis[t]);
}

评测记录 非常奇怪的wa了一个点 请大佬帮忙看看

2023/5/5 22:14
加载中...