Submission #1269908

#TimeUsernameProblemLanguageResultExecution timeMemory
1269908Faggi사이버랜드 (APIO23_cyberland)C++20
15 / 100
17 ms7236 KiB
#include <bits/stdc++.h>
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()
#define fr first
#define se second
#define pb push_back
#define mp make_pair
using namespace std;

const int MAXN=1e5+1;

vector<pair<ll,ll>>grafo[MAXN];

ll n, h, m, k;

ll dijkstra()
{
    priority_queue<pair<ll,ll>>pq;
    vector<ll>proc(n,0);
    vector<ll>dist(n,LLONG_MAX);
    dist[0]=0;
    pq.push({0,0});
    while(pq.size())
    {
        ll nod=pq.top().se;
        pq.pop();
        if(proc[nod])
            continue;
        proc[nod]=1;
        for(auto k:grafo[nod])
        {
            if(dist[nod]+k.se<dist[k.fr])
            {
                dist[k.fr]=dist[nod]+k.se;
                pq.push({-dist[k.fr],k.fr});
            }
        }
    }
    return dist[h];
}

double solve(int N, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr) {
    ll i;
    n=N;
    m=M;
    k=K;
    h=H;
    for(i=0; i<n; i++)
        grafo[i].resize(0);
    for(i=0; i<M; i++)
    {
        grafo[x[i]].pb({y[i],c[i]});
        grafo[y[i]].pb({x[i],c[i]});
    }

    ll res=dijkstra();
    if(res==LLONG_MAX)
        return double(-1);
    return double(res);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...