Submission #756193

# Submission time Handle Problem Language Result Execution time Memory
756193 2023-06-11T09:44:21 Z activedeltorre Cyberland (APIO23_cyberland) C++17
Compilation error
0 ms 0 KB
#include <vector>
#include <iostream>
#include <queue>
#include "cyberland.h"
using namespace std;
long double inf=1e17;
long double dp[100005][32];
vector<pair<int,int> >adj[100005];
priority_queue<pair<int,pair<long double,int> > >pq;
long double solve(int n,int m,int k,int fs,vector<int>x,vector<int>y,vector<int>cst,vector<int>arr)
{
    int i,j;
    for(i=0; i<m; i++)
    {
        adj[x[i]].push_back({y[i],cst[i]});
        adj[y[i]].push_back({x[i],cst[i]});
    }
    for(i=0; i<n; i++)
    {
        for(j=0; j<=k; j++)
        {
            dp[i][j]=inf;
        }
    }
    dp[0][0]=0;
    pq.push({0,{0,0}});
    int layer,curr,vec;
    long double timp,cost;
    while(pq.size())
    {
        layer=pq.top().first;
        timp=pq.top().second.first;
        curr=pq.top().second.second;
        pq.pop();
        if(dp[curr][layer]==-timp && curr!=fs)
        {
            for(i=0; i<adj[curr].size(); i++)
            {
                vec=adj[curr][i].first;
                cost=adj[curr][i].second;
                if(dp[curr][layer]+cost<dp[vec][layer])
                {
                    dp[vec][layer]=dp[curr][layer]+cost;
                    pq.push({layer,{-dp[vec][layer],vec}});
                }
                if(arr[vec]==0 && dp[vec][0]!=0)
                {
                    dp[vec][0]=0;
                    pq.push({0,{0,vec}});
                }
                if(arr[vec]==2 && dp[curr][layer]+cost<dp[vec][layer+1]*2)
                {
                    dp[vec][layer+1]=(dp[curr][layer]+cost)/2;
                    pq.push({layer+1,{-dp[vec][layer+1],vec}});
                }
            }
        }
    }
    long double sol=inf;
    for(i=0; i<=k; i++)
    {
        sol=min(sol,dp[fs][i]);
    }
    return sol;
}
/*
int main()
{
    int T;
    cin>>T;
    while (T--)
    {
        int N,M,K,H;
        cin>>N>>M>>K>>H;
        std::vector<int> x(M);
        std::vector<int> y(M);
        std::vector<int> c(M);
        std::vector<int> arr(N);
        for (int i=0; i<N; i++)
            cin>>arr[i];
        for (int i=0; i<M; i++)
        {
            cin>>x[i]>>y[i]>>c[i];
        }
        cout<<solve(N, M, K, H, x, y, c, arr);
    }
}*/

Compilation message

cyberland.cpp:10:13: error: ambiguating new declaration of 'long double solve(int, int, int, int, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)'
   10 | long double solve(int n,int m,int k,int fs,vector<int>x,vector<int>y,vector<int>cst,vector<int>arr)
      |             ^~~~~
In file included from cyberland.cpp:4:
cyberland.h:3:8: note: old declaration 'double solve(int, int, int, int, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)'
    3 | 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);
      |        ^~~~~
cyberland.cpp: In function 'long double solve(int, int, int, int, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
cyberland.cpp:37:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |             for(i=0; i<adj[curr].size(); i++)
      |                      ~^~~~~~~~~~~~~~~~~