Submission #1135925

#TimeUsernameProblemLanguageResultExecution timeMemory
1135925t9unkubjCrocodile's Underground City (IOI11_crocodile)C++20
0 / 100
1 ms320 KiB
#ifdef t9unkubj
#include"debug.cpp"
//#include"template_no_debug.h"
#else 
#define dbg(...) 199958
#endif

#undef _GLIBCXX_DEBUG
#pragma GCC optimize("O3")
using namespace std;
#include<bits/stdc++.h>
using ll=long long;
using ull=unsigned long long;
template<class T>using vc=vector<T>;
template<class T>using vvc=vc<vc<T>>;
#define rep(i,n) for(ll i=0;i<(ll)(n);i++)
#define REP(i,j,n) for(ll i=(j);i<(ll)(n);i++)
#define DREP(i,n,m) for(ll i=(n);i>=(m);i--)
#define drep(i,n) for(ll i=((n)-1);i>=0;i--)
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
template<class T,class F>
bool chmin(T &x, F y){
    if(x>y){
        x=y;
        return true;
    }
    return false;
}
template<class T, class F>
bool chmax(T &x, F y){
    if(x<y){
        x=y;
        return true;
    }
    return false;
}
double pass_time=0;
#include "crocodile.h"
int solve(int n,int m,vc<int>u,vc<int>v,vc<int>l,int k,vc<int>p){
    vvc<pair<int,int>>g(n);
    rep(i,m){
        g[u[i]].push_back({v[i],l[i]});
        g[v[i]].push_back({u[i],l[i]});
    }
    dbg(g);
    vvc<ll>md(n,vc<ll>(2,2e18));
    using S=array<ll,3>;
    priority_queue<S,vc<S>,greater<>>que;
    rep(i,k){
        md[p[i]][0]=md[p[i]][1]=0;
        que.push({0,p[i],0});
    }
    while(que.size()){
        auto [p,q,t]=que.top();que.pop();
        if(t){
            if(md[q][0]>p){
                md[q][1]=md[q][0];
                md[q][0]=p;
                if(md[q][1]<=1e9)que.push({md[q][1],q,0});
            }else if(md[q][1]>p){
                md[q][1]=p;
                que.push({md[q][1],q,0});
            }
        }
        if(md[q][1]!=p)continue;
        for(auto&[to,w]:g[q]){
            que.push({md[q][1]+w,to,1});
        }
    }
    ll ans=md[0][1];
    return ans;
}
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
    vc<int>u(M),v(M),l(M);
    rep(i,M){
        u[i]=R[i][0];
        v[i]=R[i][1];
        l[i]=L[i];
    }
    vc<int>p(K);
    rep(i,K)p[i]=P[i];
    return solve(N,M,u,v,l,K,p);
}
/*
int main(){
    int n,m;
    cin>>n>>m;
    int r[m][2];
    int l[m];  
    rep(i,m)rep(j,2)cin>>r[i][j];
    rep(i,m)cin>>l[i];
    int k;
    cin>>k;
    int p[k];
    rep(i,k)cin>>p[i];
    dbg(travel_plan(n,m,r,l,k,p));
}

5 4 
0 1
0 2
3 2
2 4
2 3 1 4
3
1 3 4
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...