Submission #1314226

#TimeUsernameProblemLanguageResultExecution timeMemory
1314226mantaggezTreasure Hunt (CCO24_day1problem1)C++20
0 / 25
4097 ms72172 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<pii> adj[nx];
priority_queue<pii, vector<pii>, greater<pii>> pq;

int solve(int src)
{
    vector<int> dist(nx, INF), vs(nx, 0);
    dist[src] = 0;
    pq.push({0, src});
    while(!pq.empty())
    {
        auto [cw, u] = pq.top();
        pq.pop();
        if(vs[u] || cw > dist[u]) continue;
        vs[u] = 1;
        // cout << "src : " << src << " cw : " << cw << " u : " << u << '\n';
        for(auto [v, nw] : adj[u])
        {
            if(dist[v] > dist[u] + nw)
            {
                dist[v] = dist[u] + nw;
                pq.push({dist[v], v});
            }
        }
    }
    int mx = coin[src];
    for(int i=1;i<=n;i++) mx = max(mx, coin[i] - dist[i]);
    return mx;
}

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++) cout << solve(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...