# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
985415 | 2024-05-17T19:21:39 Z | kkkkkkkk | Cyberland (APIO23_cyberland) | C++17 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; #define int long long vector<pair<int,int> > G[100005]; double rez=0; int N; void dijkstra(int kraj) { bool vis[N]={0}; double dist[N]; for (int i=0;i<N;i++) dist[i]=1e18; priority_queue<pair<double,int> > pq; pq.push({0,0}); dist[0]=0; while (!pq.empty()) { int teme=pq.top().second; pq.pop(); if (vis[teme]) continue; vis[teme]=1; for (auto x:G[teme]) { int next=x.first, dist_between=x.second; if (dist[next]>dist[teme]+dist_between) { dist[next]=dist[teme]+dist_between; pq.push({-dist[next], next}); } } } rez=dist[kraj]; } double solve(int n, int m, int k, int h, vector<int> a, vector<int> b, vector<int> c, vector<int> arr) { for(int i=0;i<n;i++) G[i].clear(); N=n; for (int i=0;i<m;i++) { G[a[i]].push_back({b[i],c[i]}); G[b[i]].push_back({a[i],c[i]}); } dijkstra(h); return rez; }