Submission #1269916

#TimeUsernameProblemLanguageResultExecution timeMemory
1269916FaggiCyberland (APIO23_cyberland)C++20
44 / 100
28 ms10056 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;
bool vis[MAXN];
vector<int>ar;
ll dijkstra()
{
    priority_queue<pair<ll,ll>>pq;
    vector<ll>proc(n,0);
    vector<ll>dist(n,LLONG_MAX);
    dist[h]=0;
    pq.push({0,h});
    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});
            }
        }
    }
    ll mi=dist[0];
    for(ll i=1; i<n; i++)
        if(!ar[i]&&vis[i]&&i!=h)
            mi=min(mi,dist[i]);
    return mi;
}

void dfs(ll nod)
{
    vis[nod]=1;
    if(nod==h)
        return;
    for(auto k:grafo[nod])
    {
        if(!vis[k.fr])
            dfs(k.fr);
    }
}

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) {
    ar=arr;
    memset(vis,0,sizeof(vis));
    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]});
    }
    dfs(0);
    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...