Submission #1361388

#TimeUsernameProblemLanguageResultExecution timeMemory
1361388ramez-hammadCyberland (APIO23_cyberland)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>

using namespace std;
using ll=long long;
using ld=long double;

const ll INF=1e18;

#define pb push_back

double solve(int N, int M, int K, int H, vector<int> x, vector<int> y, vector<int> c, vector<int> arr) {
    vector<vector<pair<int,ld>>> adj(N); 
    for (int i=0;i<M;i++) {
        adj[x[i]].pb({y[i],(ld)c[i]});
        adj[y[i]].pb({x[i],(ld)c[i]});
    }
    vector<vector<ld>> distance(N+1,vector<ld>(K+1,(ld)INF));
    vector<vector<bool>> processed(N+1,vector<bool>(K+1));
    priority_queue<tuple<ld,int,int>,vector<tuple<ld,int,int>>,greater<tuple<ld,int,int>>> q;
    distance[0][0]=0;
    q.push({0.0,0,0});
    while (!q.empty()) {
        auto [ignore,a,k]=q.top(); q.pop(); 
        if (a==H) continue;
        if (processed[a][k]) continue;
        processed[a][k]=true;
        for (auto u : adj[a]) {
            auto [b,w]=u;
            if (arr[b]==0) {
                if (distance[b][i]!=0) {
                    distance[b][i]=0;
                    q.push({distance[b][i],b,i});
                }
            }
        } else if (arr[b]==2) {
            if (k+1<=K) {
                if ((distance[a][k]+w)/2<distance[b][k+1]) {
                        distance[b][k+1]=(distance[a][k]+w)/2;
                        q.push({distance[b][k+1],b,k+1});
                    }
                } 
                if (distance[a][k]+w<distance[b][k]) {
                    distance[b][k]=distance[a][k]+w;
                    q.push({distance[b][k],b,k});
                }
            } else {
                if (distance[a][k]+w<distance[b][k]) {
                    distance[b][k]=distance[a][k]+w;
                    q.push({distance[b][k],b,k});
                }
            }
        }
    }
    ld ans=(ld)INF;
    for (int i=0;i<=K;i++) ans=min(ans,distance[H][i]);
    ans=(ans==(ld)INF) ? -1 : ans;
    return ans;
}

Compilation message (stderr)

cyberland.cpp: In function 'double solve(int, int, int, int, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
cyberland.cpp:30:33: error: 'i' was not declared in this scope
   30 |                 if (distance[b][i]!=0) {
      |                                 ^
cyberland.cpp:32:27: error: no matching function for call to 'std::priority_queue<std::tuple<long double, int, int>, std::vector<std::tuple<long double, int, int> >, std::greater<std::tuple<long double, int, int> > >::push(<brace-enclosed initializer list>)'
   32 |                     q.push({distance[b][i],b,i});
      |                     ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/queue:66,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:157,
                 from cyberland.cpp:1:
/usr/include/c++/13/bits/stl_queue.h:738:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::tuple<long double, int, int>; _Sequence = std::vector<std::tuple<long double, int, int> >; _Compare = std::greater<std::tuple<long double, int, int> >; value_type = std::tuple<long double, int, int>]'
  738 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/13/bits/stl_queue.h:738:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const std::priority_queue<std::tuple<long double, int, int>, std::vector<std::tuple<long double, int, int> >, std::greater<std::tuple<long double, int, int> > >::value_type&' {aka 'const std::tuple<long double, int, int>&'}
  738 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/13/bits/stl_queue.h:746:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(value_type&&) [with _Tp = std::tuple<long double, int, int>; _Sequence = std::vector<std::tuple<long double, int, int> >; _Compare = std::greater<std::tuple<long double, int, int> >; value_type = std::tuple<long double, int, int>]'
  746 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/13/bits/stl_queue.h:746:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::tuple<long double, int, int>, std::vector<std::tuple<long double, int, int> >, std::greater<std::tuple<long double, int, int> > >::value_type&&' {aka 'std::tuple<long double, int, int>&&'}
  746 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
cyberland.cpp:35:11: error: 'else' without a previous 'if'
   35 |         } else if (arr[b]==2) {
      |           ^~~~
cyberland.cpp:35:24: error: 'b' was not declared in this scope
   35 |         } else if (arr[b]==2) {
      |                        ^
cyberland.cpp:37:37: error: 'w' was not declared in this scope
   37 |                 if ((distance[a][k]+w)/2<distance[b][k+1]) {
      |                                     ^
cyberland.cpp:39:31: error: no matching function for call to 'std::priority_queue<std::tuple<long double, int, int>, std::vector<std::tuple<long double, int, int> >, std::greater<std::tuple<long double, int, int> > >::push(<brace-enclosed initializer list>)'
   39 |                         q.push({distance[b][k+1],b,k+1});
      |                         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_queue.h:738:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::tuple<long double, int, int>; _Sequence = std::vector<std::tuple<long double, int, int> >; _Compare = std::greater<std::tuple<long double, int, int> >; value_type = std::tuple<long double, int, int>]'
  738 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/13/bits/stl_queue.h:738:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const std::priority_queue<std::tuple<long double, int, int>, std::vector<std::tuple<long double, int, int> >, std::greater<std::tuple<long double, int, int> > >::value_type&' {aka 'const std::tuple<long double, int, int>&'}
  738 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/13/bits/stl_queue.h:746:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(value_type&&) [with _Tp = std::tuple<long double, int, int>; _Sequence = std::vector<std::tuple<long double, int, int> >; _Compare = std::greater<std::tuple<long double, int, int> >; value_type = std::tuple<long double, int, int>]'
  746 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/13/bits/stl_queue.h:746:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::tuple<long double, int, int>, std::vector<std::tuple<long double, int, int> >, std::greater<std::tuple<long double, int, int> > >::value_type&&' {aka 'std::tuple<long double, int, int>&&'}
  746 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
cyberland.cpp:42:36: error: 'w' was not declared in this scope
   42 |                 if (distance[a][k]+w<distance[b][k]) {
      |                                    ^
cyberland.cpp:44:27: error: no matching function for call to 'std::priority_queue<std::tuple<long double, int, int>, std::vector<std::tuple<long double, int, int> >, std::greater<std::tuple<long double, int, int> > >::push(<brace-enclosed initializer list>)'
   44 |                     q.push({distance[b][k],b,k});
      |                     ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_queue.h:738:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::tuple<long double, int, int>; _Sequence = std::vector<std::tuple<long double, int, int> >; _Compare = std::greater<std::tuple<long double, int, int> >; value_type = std::tuple<long double, int, int>]'
  738 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/13/bits/stl_queue.h:738:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const std::priority_queue<std::tuple<long double, int, int>, std::vector<std::tuple<long double, int, int> >, std::greater<std::tuple<long double, int, int> > >::value_type&' {aka 'const std::tuple<long double, int, int>&'}
  738 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/13/bits/stl_queue.h:746:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(value_type&&) [with _Tp = std::tuple<long double, int, int>; _Sequence = std::vector<std::tuple<long double, int, int> >; _Compare = std::greater<std::tuple<long double, int, int> >; value_type = std::tuple<long double, int, int>]'
  746 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/13/bits/stl_queue.h:746:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::tuple<long double, int, int>, std::vector<std::tuple<long double, int, int> >, std::greater<std::tuple<long double, int, int> > >::value_type&&' {aka 'std::tuple<long double, int, int>&&'}
  746 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
cyberland.cpp:47:36: error: 'w' was not declared in this scope
   47 |                 if (distance[a][k]+w<distance[b][k]) {
      |                                    ^
cyberland.cpp:49:27: error: no matching function for call to 'std::priority_queue<std::tuple<long double, int, int>, std::vector<std::tuple<long double, int, int> >, std::greater<std::tuple<long double, int, int> > >::push(<brace-enclosed initializer list>)'
   49 |                     q.push({distance[b][k],b,k});
      |                     ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_queue.h:738:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::tuple<long double, int, int>; _Sequence = std::vector<std::tuple<long double, int, int> >; _Compare = std::greater<std::tuple<long double, int, int> >; value_type = std::tuple<long double, int, int>]'
  738 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/13/bits/stl_queue.h:738:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const std::priority_queue<std::tuple<long double, int, int>, std::vector<std::tuple<long double, int, int> >, std::greater<std::tuple<long double, int, int> > >::value_type&' {aka 'const std::tuple<long double, int, int>&'}
  738 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/13/bits/stl_queue.h:746:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(value_type&&) [with _Tp = std::tuple<long double, int, int>; _Sequence = std::vector<std::tuple<long double, int, int> >; _Compare = std::greater<std::tuple<long double, int, int> >; value_type = std::tuple<long double, int, int>]'
  746 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/13/bits/stl_queue.h:746:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::tuple<long double, int, int>, std::vector<std::tuple<long double, int, int> >, std::greater<std::tuple<long double, int, int> > >::value_type&&' {aka 'std::tuple<long double, int, int>&&'}
  746 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
cyberland.cpp:53:5: warning: no return statement in function returning non-void [-Wreturn-type]
   53 |     }
      |     ^
cyberland.cpp: At global scope:
cyberland.cpp:55:5: error: expected unqualified-id before 'for'
   55 |     for (int i=0;i<=K;i++) ans=min(ans,distance[H][i]);
      |     ^~~
cyberland.cpp:55:18: error: 'i' does not name a type
   55 |     for (int i=0;i<=K;i++) ans=min(ans,distance[H][i]);
      |                  ^
cyberland.cpp:55:23: error: 'i' does not name a type
   55 |     for (int i=0;i<=K;i++) ans=min(ans,distance[H][i]);
      |                       ^
cyberland.cpp:56:5: error: 'ans' does not name a type
   56 |     ans=(ans==(ld)INF) ? -1 : ans;
      |     ^~~
cyberland.cpp:57:5: error: expected unqualified-id before 'return'
   57 |     return ans;
      |     ^~~~~~
cyberland.cpp:58:1: error: expected declaration before '}' token
   58 | }
      | ^