样例没问题,只对了#2和#5
查看原帖
样例没问题,只对了#2和#5
743838
river_luogu楼主2023/8/20 22:38
#include <iostream>
#include <queue>
#include <algorithm>
#define mp make_pair
#define p pair<long long, long long>
using namespace std;
struct node
{
    long long to;
    long long next;
    long long dist;
} nd[200010];
long long h[200010];
long long dis[100010], vis[100010];
priority_queue<p> q;
long long tmp = 0;
void add(long long u, long long v, long long w)
{
    tmp++;
    nd[tmp].to = v;
    nd[tmp].dist = w;
    nd[tmp].next = h[u];
    h[u] = tmp;
}
int main()
{
    long long n, m, s;
    cin >> n >> m >> s;
    for (long long i = 0; i <= n; i++)
    {
        dis[i] = 0x7fffffff;
    }
    for (long long i = 0; i < m; i++)
    {
        long long u, v, w;
        cin >> u >> v >> w;
        add(u, v, w);
    }
    dis[s] = 0;
    q.push(mp(s, 0));
    while (!q.empty())
    {
        long long u = q.top().first;
        q.pop();
        if (vis[u])
        {
            continue;
        }
        vis[u] = 1;
        for (long long i = h[u]; i; i = nd[i].next)
        {
            long long v = nd[i].to;
            long long l = nd[i].dist;
            if (dis[v] > dis[u] + l)
            {
                dis[v] = dis[u] + l;
                q.push(mp(v, dis[v]));
            }
        }
    }
    for (long long i = 1; i <= n; i++)
    {
        cout << dis[i] << ' ';
    }
    return 0;
}

自我感觉写的怪怪的,但说不出哪里怪

2023/8/20 22:38
加载中...