Submission #984304

# Submission time Handle Problem Language Result Execution time Memory
984304 2024-05-16T12:59:05 Z Malix Cyberland (APIO23_cyberland) C++17
13 / 100
3000 ms 975928 KB
#include "cyberland.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vii;
typedef pair<int,int> pi;
typedef vector<pi> pii;

#define REP(i,a,b) for(int i=a;i<b;i++)
#define F first
#define S second
#define PB push_back
#define MP make_pair

ll INF=1e18+1;

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) {
    //DFS from start
    vector<pii> a(N);
    REP(i,0,M){
        a[x[i]].PB({y[i],i});
        a[y[i]].PB({x[i],i});
    }
    priority_queue<int> pq;
    vi b(N,0);
    pq.push(0);
    while(!pq.empty()){
        int k1=pq.top();
        pq.pop();
        b[k1]=1;
        if(k1==H)continue;
        for(auto u:a[k1]){
            if(b[u.F]==1)continue;
            pq.push(u.F);
        }
    }
    if(b[H]==0)return -1;
    double ans=0;bool flag=0;
    //Djikistra from end
    priority_queue<pair<int,double>,vector<pair<int,double>>,greater<pair<int,double>>> pq2;
    vector<double> d(N,INF);
    d[H]=0.0;
    vi val(N,1);
    K=pow(2,K);
    for(auto u:a[H]){
        d[u.F]=(double)c[u.S];
        pq2.push({d[u.F],u.F});
        val[u.F]=min(K,val[H]*arr[u.F]);
    }
    while(!pq2.empty()){
        //distance
        double p=pq2.top().F;
        //vertice
        int q=pq2.top().S;
        pq2.pop();
        if(d[q]<p)continue;
        if(arr[q]==0||q==0){
            if(b[q]==1){
                //cout<<q<<"\n";
                ans=d[q];
                //cout<<"a";
                flag=1;
                break;
            }
            else{
                continue;
            }
            
        }
        for(auto u:a[q]){
            if(d[u.F]<=d[q]+(double)c[u.S]/(double)val[q])continue;
            d[u.F]=d[q]+(double)c[u.S]/(double)val[q];
            pq2.push({d[u.F],u.F});
            val[u.F]=min(K,val[q]*arr[u.F]);
        }
    }

    if(flag)return ans;
    else return d[0];
}
# Verdict Execution time Memory Grader output
1 Correct 21 ms 592 KB Correct.
2 Correct 19 ms 856 KB Correct.
# Verdict Execution time Memory Grader output
1 Correct 21 ms 632 KB Correct.
2 Correct 20 ms 1368 KB Correct.
3 Correct 19 ms 1368 KB Correct.
4 Correct 20 ms 1372 KB Correct.
5 Correct 20 ms 1372 KB Correct.
6 Correct 21 ms 2204 KB Correct.
7 Correct 20 ms 1980 KB Correct.
8 Correct 9 ms 2932 KB Correct.
9 Correct 20 ms 1116 KB Correct.
10 Correct 20 ms 1116 KB Correct.
# Verdict Execution time Memory Grader output
1 Incorrect 18 ms 600 KB Wrong Answer.
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 28 ms 6224 KB Wrong Answer.
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 3026 ms 109828 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 3006 ms 132604 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 3051 ms 414464 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 3065 ms 975928 KB Time limit exceeded
2 Halted 0 ms 0 KB -