求助站外题
  • 板块题目总版
  • 楼主lighthouse
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/11/28 16:46
  • 上次更新2023/11/3 23:20:50
查看原帖
求助站外题
218180
lighthouse楼主2021/11/28 16:46

link

#include <bits/stdc++.h>

using namespace std;

int n, m, s, t;

struct node{
	int x, y;
}a[101];

double dis[101][101];

int main(){
	cin >> n;
	for(int i = 1;i <= n;i++){
		cin >> a[i].x >> a[i].y;
	}
	cin >> m;
	memset(dis, 0x7f, sizeof(dis));
	for(int i = 1;i <= m;i++){
		int xx, yy;
		cin >> xx >> yy;
		dis[xx][yy] = sqrt((double(a[xx].x - a[yy].x)) * (double(a[xx].x - a[yy].x)) + (double(a[xx].y - a[yy].y)) * (double(a[xx].y - a[yy].y)));
	}
	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 != j) && (j != k) && (k != i) && (dis[i][j] > dis[i][k] + dis[k][j])){
					dis[i][j] = dis[i][k] + dis[k][j];
				}
			}
		}
	}
	printf("%.2lf", dis[s][t]);
	return 0;
}

只有40分(WA#3,#4,#5)求助

2021/11/28 16:46
加载中...