Submission #805419

# Submission time Handle Problem Language Result Execution time Memory
805419 2023-08-03T16:32:39 Z Theo830 Cyberland (APIO23_cyberland) C++17
97 / 100
3000 ms 157528 KB
                #include "cyberland.h"
                #include <bits/stdc++.h>
                using namespace std;
                #define f(i,a,b) for(int i = a;i < b;i++)
                #define ll int
                #define ii pair<ll,ll>
                #define id pair<double,ii>
                #define F first
                #define S second
                #define pb push_back
                priority_queue<id>pq;
                bool v[100005] = {0};
                double dist[100005][70];
                vector<vector<ii> >adj;
                ll H;
                void dfs(ll idx){
                    v[idx] = 1;
                    for(auto x:adj[idx]){
                        if(!v[x.F] && x.F != H){
                            dfs(x.F);
                        }
                    }
                }
                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) {
                    double ans;
                    H = h;
                  	k = min(k,67);
                    adj.assign(n+5,vector<ii>());
                    f(i,0,n){
                        v[i] = 0;
                        f(j,0,k+1){
                            dist[i][j] = 1e18;
                        }
                    }
                    f(i,0,m){
                        adj[x[i]].pb(ii(y[i],c[i]));
                        adj[y[i]].pb(ii(x[i],c[i]));
                    }
                    dfs(0);
                    f(i,0,n){
                        if((arr[i] == 0 && v[i]) || i == 0){
                            pq.push(id(0,ii(i,0)));
                            dist[i][0] = 0;
                        }
                    }
                    ans = 1e18;
                    while(!pq.empty()){
                        id f = pq.top();
                        pq.pop();
                        double w = -f.F;
                        ll u = f.S.F;
                        ll ek = f.S.S;
                        if(dist[u][ek] < w){
                            continue;
                        }
                        if(arr[u] == 2 && ek+1 <= k){
                            for(auto x:adj[u]){
                                if(x.F == h){
                                    ans = min(ans,dist[u][ek]/2 + x.S);
                                }
                                else if(dist[x.F][ek+1] > dist[u][ek]/2 + x.S){
                                    dist[x.F][ek+1] = dist[u][ek]/2 + x.S;
                                    pq.push(id(-dist[x.F][ek+1],ii(x.F,ek+1)));
                                }
                            }
                        }
                        for(auto x:adj[u]){
                            if(x.F == h){
                                ans = min(ans,dist[u][ek] + x.S);
                            }
                            else if(dist[x.F][ek] > dist[u][ek] + x.S){
                                dist[x.F][ek] = dist[u][ek] + x.S;
                                pq.push(id(-dist[x.F][ek],ii(x.F,ek)));
                            }
                        }
                    }
                    if(ans == 1e18){
                        ans = -1;
                    }
                    return ans;
                }
# Verdict Execution time Memory Grader output
1 Correct 14 ms 468 KB Correct.
2 Correct 15 ms 408 KB Correct.
# Verdict Execution time Memory Grader output
1 Correct 19 ms 980 KB Correct.
2 Correct 23 ms 1016 KB Correct.
3 Correct 21 ms 1008 KB Correct.
4 Correct 23 ms 1000 KB Correct.
5 Correct 22 ms 1028 KB Correct.
6 Correct 22 ms 6604 KB Correct.
7 Correct 28 ms 6504 KB Correct.
8 Correct 17 ms 12884 KB Correct.
9 Correct 21 ms 340 KB Correct.
10 Correct 21 ms 412 KB Correct.
# Verdict Execution time Memory Grader output
1 Correct 23 ms 980 KB Correct.
2 Correct 23 ms 1036 KB Correct.
3 Correct 21 ms 996 KB Correct.
4 Correct 21 ms 340 KB Correct.
5 Correct 33 ms 408 KB Correct.
6 Correct 6 ms 5588 KB Correct.
# Verdict Execution time Memory Grader output
1 Correct 208 ms 39880 KB Correct.
2 Correct 247 ms 1180 KB Correct.
3 Correct 215 ms 1104 KB Correct.
4 Correct 229 ms 1152 KB Correct.
5 Correct 187 ms 444 KB Correct.
# Verdict Execution time Memory Grader output
1 Correct 19 ms 1024 KB Correct.
2 Correct 21 ms 984 KB Correct.
3 Correct 21 ms 1028 KB Correct.
4 Correct 22 ms 6692 KB Correct.
5 Correct 18 ms 432 KB Correct.
# Verdict Execution time Memory Grader output
1 Correct 22 ms 1052 KB Correct.
2 Correct 19 ms 980 KB Correct.
3 Correct 51 ms 48716 KB Correct.
4 Correct 17 ms 4976 KB Correct.
5 Correct 20 ms 432 KB Correct.
6 Correct 21 ms 1068 KB Correct.
# Verdict Execution time Memory Grader output
1 Correct 251 ms 1480 KB Correct.
2 Correct 37 ms 2568 KB Correct.
3 Correct 627 ms 63464 KB Correct.
4 Correct 511 ms 14480 KB Correct.
5 Correct 942 ms 58900 KB Correct.
6 Correct 416 ms 26880 KB Correct.
7 Correct 471 ms 15948 KB Correct.
8 Correct 477 ms 2760 KB Correct.
9 Correct 218 ms 1516 KB Correct.
10 Correct 218 ms 2040 KB Correct.
11 Correct 456 ms 1484 KB Correct.
12 Correct 236 ms 1556 KB Correct.
13 Correct 245 ms 1468 KB Correct.
14 Correct 409 ms 31108 KB Correct.
15 Correct 461 ms 8632 KB Correct.
16 Correct 233 ms 1460 KB Correct.
17 Correct 267 ms 1456 KB Correct.
18 Correct 260 ms 1488 KB Correct.
19 Correct 627 ms 1572 KB Correct.
20 Correct 18 ms 596 KB Correct.
21 Correct 18 ms 1108 KB Correct.
22 Correct 29 ms 3400 KB Correct.
# Verdict Execution time Memory Grader output
1 Correct 798 ms 2976 KB Correct.
2 Correct 107 ms 3528 KB Correct.
3 Correct 539 ms 66972 KB Correct.
4 Correct 955 ms 5484 KB Correct.
5 Execution timed out 3044 ms 157528 KB Time limit exceeded
6 Halted 0 ms 0 KB -