답안 #982127

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
982127 2024-05-13T22:26:38 Z logangd 사이버랜드 (APIO23_cyberland) C++17
100 / 100
2975 ms 65764 KB
#include "cyberland.h"
#include <bits/stdc++.h>
using namespace std;

vector<pair<int,int>>ad[100005];
vector<int>rs,ar,vs(100005);
int h;

void dfs(int u){
    if(u==h)return;
    if(ar[u]==0)rs.push_back(u);
    vs[u]=1;
    for(auto v:ad[u])
        if(!vs[v.first])
            dfs(v.first);
}

double solve(int N,int M,int K,int H,vector<int>x,vector<int>y,vector<int>c,vector<int>arr) {
	int wha=70;
    h=H;
    for(int i=0;i<N;i++)ad[i].clear(),vs[i]=0;
    for(int i=0;i<M;i++)
        ad[x[i]].push_back({y[i],c[i]}),
        ad[y[i]].push_back({x[i],c[i]});
    rs.clear();
    ar.clear();
    rs.push_back(0);
    for(auto i:arr)ar.push_back(i);
    dfs(0);
    priority_queue<pair<double,pair<int,int>>>dj;
    for(auto i:rs)dj.push({0,{i,0}});
    double R[N][min(K,wha)+1];
    for(int i=0;i<N;i++)
        for(int j=0;j<=min(K,wha);j++)R[i][j]=1;
    
    for(int i=0;i<=min(K,wha);i++){
        priority_queue<pair<double,pair<int,int>>>djn;
        while(!dj.empty()){
            auto t=dj.top();
            dj.pop();
            if(R[t.second.first][t.second.second]!=1)continue;
            R[t.second.first][t.second.second]=t.first;
            if(t.second.first==H)continue;
            if(arr[t.second.first]==2&&t.second.second<min(K,wha))
            for(auto j:ad[t.second.first])djn.push({t.first/2-j.second,{j.first,t.second.second+1}});
            for(auto j:ad[t.second.first])dj.push({t.first-j.second,{j.first,t.second.second}});
        }
        swap(dj,djn);
    }
    double res=R[H][0];
    for(int i=1;i<=min(K,wha);i++)if(R[H][i]!=1)res=max(res,R[H][i]);
    return -res;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 19 ms 3164 KB Correct.
2 Correct 18 ms 3164 KB Correct.
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 3420 KB Correct.
2 Correct 30 ms 3612 KB Correct.
3 Correct 31 ms 3420 KB Correct.
4 Correct 26 ms 3420 KB Correct.
5 Correct 27 ms 3592 KB Correct.
6 Correct 25 ms 6288 KB Correct.
7 Correct 32 ms 6236 KB Correct.
8 Correct 16 ms 9304 KB Correct.
9 Correct 29 ms 3164 KB Correct.
10 Correct 25 ms 3164 KB Correct.
# 결과 실행 시간 메모리 Grader output
1 Correct 30 ms 3416 KB Correct.
2 Correct 29 ms 3616 KB Correct.
3 Correct 29 ms 3656 KB Correct.
4 Correct 27 ms 3160 KB Correct.
5 Correct 27 ms 3164 KB Correct.
6 Correct 8 ms 5980 KB Correct.
# 결과 실행 시간 메모리 Grader output
1 Correct 195 ms 21676 KB Correct.
2 Correct 206 ms 3420 KB Correct.
3 Correct 180 ms 3672 KB Correct.
4 Correct 197 ms 3508 KB Correct.
5 Correct 96 ms 3268 KB Correct.
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 3676 KB Correct.
2 Correct 25 ms 3420 KB Correct.
3 Correct 25 ms 3612 KB Correct.
4 Correct 28 ms 6724 KB Correct.
5 Correct 21 ms 3288 KB Correct.
# 결과 실행 시간 메모리 Grader output
1 Correct 27 ms 3648 KB Correct.
2 Correct 23 ms 3684 KB Correct.
3 Correct 43 ms 27096 KB Correct.
4 Correct 19 ms 5800 KB Correct.
5 Correct 31 ms 3164 KB Correct.
6 Correct 25 ms 3676 KB Correct.
# 결과 실행 시간 메모리 Grader output
1 Correct 380 ms 3676 KB Correct.
2 Correct 68 ms 3876 KB Correct.
3 Correct 824 ms 24004 KB Correct.
4 Correct 448 ms 8864 KB Correct.
5 Correct 1331 ms 20604 KB Correct.
6 Correct 1205 ms 16736 KB Correct.
7 Correct 429 ms 8532 KB Correct.
8 Correct 348 ms 4352 KB Correct.
9 Correct 318 ms 3668 KB Correct.
10 Correct 298 ms 3672 KB Correct.
11 Correct 314 ms 3752 KB Correct.
12 Correct 324 ms 3720 KB Correct.
13 Correct 341 ms 3668 KB Correct.
14 Correct 442 ms 9392 KB Correct.
15 Correct 406 ms 5452 KB Correct.
16 Correct 351 ms 3696 KB Correct.
17 Correct 375 ms 3668 KB Correct.
18 Correct 358 ms 3676 KB Correct.
19 Correct 712 ms 3844 KB Correct.
20 Correct 14 ms 3160 KB Correct.
21 Correct 22 ms 3420 KB Correct.
22 Correct 99 ms 4608 KB Correct.
# 결과 실행 시간 메모리 Grader output
1 Correct 839 ms 4184 KB Correct.
2 Correct 138 ms 4416 KB Correct.
3 Correct 662 ms 65764 KB Correct.
4 Correct 509 ms 5880 KB Correct.
5 Correct 2975 ms 31608 KB Correct.
6 Correct 2540 ms 21108 KB Correct.
7 Correct 872 ms 16576 KB Correct.
8 Correct 462 ms 4280 KB Correct.
9 Correct 692 ms 3920 KB Correct.
10 Correct 655 ms 4060 KB Correct.
11 Correct 242 ms 3508 KB Correct.
12 Correct 686 ms 3876 KB Correct.
13 Correct 750 ms 4460 KB Correct.
14 Correct 2640 ms 30312 KB Correct.
15 Correct 1661 ms 34440 KB Correct.
16 Correct 781 ms 13944 KB Correct.
17 Correct 510 ms 5428 KB Correct.
18 Correct 734 ms 3888 KB Correct.
19 Correct 816 ms 4012 KB Correct.
20 Correct 800 ms 3920 KB Correct.
21 Correct 1578 ms 3912 KB Correct.
22 Correct 24 ms 3164 KB Correct.
23 Correct 46 ms 3672 KB Correct.
24 Correct 225 ms 5080 KB Correct.