Submission #969027

#TimeUsernameProblemLanguageResultExecution timeMemory
969027kshitiz101Cyberland (APIO23_cyberland)C++17
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;
 
 
#define ll long long
#define ld long double
#define endl "\n"
#define yes cout<<"YES"<<endl
#define no  cout<<"NO"<<endl
const int N=1e5+10;
vector<pair<ll,ll>> adj[N];
ll n,m,h,k;
void solve()
{
     cin>>m>>k>>h;
     vector<ll> first,second,third;
     for(int i=0;i<m;i++)
     {
          ll p;
          cin>>p;
          first.push_back(p);
     }
     
     for(int i=0;i<m;i++)
     {
          ll p;
          cin>>p;
          second.push_back(p);
     }
     
     for(int i=0;i<m;i++)
     {
          ll p;
          cin>>p;
          third.push_back(p);
     }
     
     ll type[n];
     for(auto &p:type)
     cin>>p;
     
     for(int i=0;i<m;i++)
     {
          adj[first[i]].push_back({second[i],third[i]});
          adj[second[i]].push_back({first[i],third[i]});
     }
     
     priority_queue<tuple<ld,ll,ll>,vector<tuple<ld,ll,ll>>,greater<tuple<ld,ll,ll>>> pq;
     pq.push({0.0,0,0});
     
     ld ans[n][k+1];
     for(int i=1;i<n;i++)
     {
          for(int j=0;j<k;j++)
          ans[i][j]=1e15;
     }
     
     while(pq.size())
     {
          auto it=pq.top();
          pq.pop();
          ld dist=get<0>(it);
          ll node=get<1>(it);
          ll usedk=get<2>(it);
          
          if(ans[node][usedk]<dist||node==h)
          continue;
          
          for(auto &p:adj[node])
          {
               ld e=dist+(long double)p.second;
               if(type[p.first]==0)
               e=0;
               
               if(usedk<k&&type[p.first]==2)
               {
                    if(ans[p.first][usedk]>e)
                    {
                         ans[p.first][usedk]=e;
                         pq.push({e,p.first,usedk});
                    }
                    
                    if(ans[p.first][usedk+1]>(e/2.0))
                    {
                         ans[p.first][usedk+1]=(e/2.0);
                         pq.push({e/2.0,p.first,usedk+1});
                    }
               }
               else
               {
                    if(ans[p.first][usedk]>e)
                    {
                         ans[p.first][usedk]=e;
                         pq.push({e,p.first,usedk});
                    }
               }
          }
     }
     
     ld final=1e15;
     for(int i=0;i<=k;i++)
     final=min(final,ans[h][i]);
     
     cout<<final<<endl;
}
int main()
{
	while(cin>>n)
	{
	     solve();
	}
}

Compilation message (stderr)

/usr/bin/ld: /tmp/cc600RKm.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccqJgdyl.o:cyberland.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/cc600RKm.o: in function `main':
grader.cpp:(.text.startup+0x696): undefined reference to `solve(int, int, int, int, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status