Submission #1283528

#TimeUsernameProblemLanguageResultExecution timeMemory
1283528Faisal_SaqibExhibition (JOI19_ho_t2)C++20
Compilation error
0 ms0 KiB
#include "crocodile.h"
// #include "grader.cpp"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int QK=1e5+100,inf=1e9;
int n,k;
ll dist[QK],sp[QK];
ll dp[QK][5];
bool vis[QK];
vector<pair<int,int>> adj[QK];
void dykstra(){
  for(int i=0;i<=n;i++)
  {
    dp[i][0]=inf;
    dp[i][1]=inf;
    dist[i]=inf;
  }
  priority_queue<pair<ll,ll>,vector<pair<ll,ll>>,greater<pair<ll,ll>>> pq;
  for(int j=0;j<k;j++){
    dist[sp[j]]=0;
    pq.push({0,sp[j]});
  }
  while(!pq.empty()){
    auto [d,u]=pq.top();pq.pop();
    if(d>dist[u])continue;
    for(auto [v,w]:adj[u]){
      if(dist[v]>dist[u]+w){
        dist[v]=dist[u]+w;
        pq.push({dist[v],v});
      }
    }
  }
}
void calculate(){
  // dp[u] = answer if we start at u
  // 


  // ord of {(dist,node)}
  // dp[node][0] = min(dist[nei][0])
  // dp[node][1] = 2min(dist[nei][0])
  // vector<pair<ll,int>> ord;
  // for(int i=0;i<n;i++)
  //   ord.push_back({dist[i],i});
  // for(int i=0;i<5;i++)
  // {
  // sort(ord.begin(),ord.end());

  //   for(auto [d,u]:ord){
  //     auto it=lower_bound(sp,sp+k,u);
  //     if(it!=sp+k && *it==u){
  //       dp[u][0]=0;
  //       continue;
  //     }
  //     vector<ll> curp;
  //     for(auto [v,w]:adj[u]){
  //       curp.push_back(dp[v][0]+w);
  //     }
  //     sort(begin(curp),end(curp));
  //     dp[u][0]=min(dp[u][0],curp[1]);
  //   }
  //   ord.clear();
  //   for(int i=0;i<n;i++)
  //   {
  //     ord.push_back({dp[i][0],i});
  //   }
  //   // sort(begin())
  // }
  set<int> cur;
  for(int i=0;i<k;i++)
  {
    dp[sp[i]][0]=0;
    vis[sp[i]]=1;
    for(auto [u,w]:adj[sp[i]])
    {
      if(!vis[u])
      {
        vis[u]=1;
        cur.insert(u);
      }
    }
  }
  while(cur.size())
  {
    set<int> curp;
    vector<pair<ll,ll>> ord;
    for(auto x:cur)
    {
      vector<ll> curp;
      for(auto [v,w]:adj[x]){
        curp.push_back(dp[v][0]+w);
      }
      sort(begin(curp),end(curp));
      dp[x][0]=min(dp[x][0],curp[1]);
      // cout<<"At "<<x<<' '<<dp[x][0]<<endl;;

      ord.push_back({dp[x][0],x});
    }
    sort(begin(ord),end(ord));
    for(auto [asdpo,x]:ord)
    {
      vector<ll> curp;
      for(auto [v,w]:adj[x]){
        curp.push_back(dp[v][0]+w);
      }
      sort(begin(curp),end(curp));
      dp[x][0]=min(dp[x][0],curp[1]);
      ord.push_back({dp[x][0],x});
    }
    for(auto x:cur)
    {
      vis[x]=1;
      for(auto [u,w]:adj[x])
      {
        if(!vis[u])
        {
          vis[u]=1;
          curp.insert(u);
        }
      }
    }
    cur=curp;
  }

}
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
  n=N,k=K;
  for(int i=0;i<K;i++)
    sp[i]=P[i];
  // sort(sp,sp+K);
  for(int i=0;i<M;i++){
    int u=R[i][0],v=R[i][1],l=L[i];
    adj[u].push_back({v,l});
    adj[v].push_back({u,l});
  }
  dykstra();
  calculate();
  return dp[0][0];
}


Compilation message (stderr)

joi2019_ho_t2.cpp:1:10: fatal error: crocodile.h: No such file or directory
    1 | #include "crocodile.h"
      |          ^~~~~~~~~~~~~
compilation terminated.