【蒟蒻求救】ybt最短路模板题,最后一个点WA
  • 板块学术版
  • 楼主samzhangjy
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/8/19 17:24
  • 上次更新2023/11/4 10:01:57
查看原帖
【蒟蒻求救】ybt最短路模板题,最后一个点WA
235561
samzhangjy楼主2021/8/19 17:24

rt,蒟蒻调了半天也没调出来。。

题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1342

蒟蒻的代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <memory.h>
using namespace std;
const int N = 1010, M = 5 * N;

int n, m, s, t, u, v;
int h[N], idx, vtx[M], nxt[M], vis[N], x[N], y[N];
double w[N], dis[N];

void addEdge(int a, int b, double c) {
    int p = h[a], flag = 0;
    while (p != -1) {
        if (vtx[p] == b) {
            flag = 1, w[p] = min(w[p], c);
        }
        p = nxt[p];
    }
    if (flag == 0) {
        vtx[idx] = b, nxt[idx] = h[a], w[idx] = c, h[a] = idx++;
    }
}

void dijkstra(int u) {
    dis[u] = 0;
    for (int k = 0; k < n; k++) {
        int tmp = 1;
        for (int i = 1; i <= n; i++) {
            if (vis[i] == 0) {
                tmp = i;
                break;
            }
        }
        for (int i = tmp + 1; i <= n; i++) {
            if (vis[i] == 0 && dis[tmp] > dis[i]) tmp = i;
        }
        vis[tmp] = 1;
        int p = h[tmp];
        while (p != -1) {
            if (dis[vtx[p]] > dis[tmp] + w[p]) {
                dis[vtx[p]] = dis[tmp] + w[p];
                // pre[vtx[p]] = tmp;
            }
            p = nxt[p];
        }
    }
}

int main() {
    memset(h, -1, sizeof h);
    memset(dis, 127, sizeof dis);
    scanf("%d", &n);
    // for (int i = 1; i <= n; i++) dis[i] = (2 << 30) - 1;
    for (int i = 1; i <= n; i++) scanf("%d%d", &x[i], &y[i]);
    scanf("%d", &m);
    for (int i = 1; i <= m; i++) {
        scanf("%d%d", &u, &v);
        double weight = sqrt((x[u] - x[v]) * (x[u] - x[v]) + (y[u] - y[v]) * (y[u] - y[v]));
        // cout << weight << endl;
        if (u != v) {
            addEdge(u, v, weight);
            addEdge(v, u, weight);
        }
    }
    scanf("%d%d", &s, &t);
    dijkstra(s);
    printf("%.2lf\n", dis[t]);
    return 0;
}

蒟蒻将无比感激!!

2021/8/19 17:24
加载中...