Submission #1314239

#TimeUsernameProblemLanguageResultExecution timeMemory
1314239mantaggezTreasure Hunt (CCO24_day1problem1)C++20
25 / 25
1236 ms86436 KiB
#include <bits/stdc++.h>

using namespace std;

#define pii pair<int, int>

const int nx = 1e6+5;
const int INF = 1e9;

int n, m, coin[nx];
vector<int> dist(nx);
vector<pii> adj[nx];
priority_queue<pii, vector<pii>, greater<pii>> pq;

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin >> n >> m;
    for(int i=1;i<=n;i++) cin >> coin[i];
    for(int i=1;i<=m;i++)
    {
        int u, v, w;
        cin >> u >> v >> w;
        adj[u].push_back({v, w});
        adj[v].push_back({u, w});
    }
    for(int i=1;i<=n;i++)
    {
        dist[i] = -coin[i];
        pq.push({dist[i], i});
    }

    while(!pq.empty())
    {
        auto [cw, u] = pq.top();
        pq.pop();
        // cout << "cw : " << cw << " u : " << u << '\n';
        for(auto [v, nw] : adj[u])
        {
            if(dist[v] > dist[u] + nw)
            {
                // cout << "v : " << v << '\n';
                // cout << "dist[v] : " << dist[v] << " dist[u] + nw : " << dist[u] + nw << '\n';
                dist[v] = dist[u] + nw;
                pq.push({dist[v], v});
            }
        }
    }

    for(int i=1;i<=n;i++)
        cout << -dist[i] << '\n';

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...