답안 #870761

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
870761 2023-11-09T03:37:41 Z daniel920712 Escape Route (JOI21_escape_route) C++17
5 / 100
9000 ms 111956 KB
#include "escape_route.h"
#include <queue>
#include <utility>
#include <stdio.h>
#define ll long long
using namespace std;
struct aaa
{
    ll a,b,c;
};
priority_queue < pair < ll , ll > , vector < pair < ll , ll > >, greater < pair < ll , ll > > > dij;
vector < long long > Ans;
pair < long long , long long > DP[105][105];
vector < aaa > Next[105];
ll vis[105];
pair < ll, ll > operator +(pair < ll , ll > a, pair < ll , ll > b)
{

    b.first+=a.first;
    if(b.second==0) b.second=a.second;
    else if(a.second&&b.second) b.first++;
    return b;
}
vector<long long> calculate_necessary_time(int N, int M, long long S, int Q,vector<int> A,vector<int> B,vector<long long> L,vector<long long> C,vector<int> U,vector<int> V,vector<long long> T)
{
    //printf("aaaaa\n");
    ll i,j,k,a,b,c;
    pair < ll , ll > ans;
    aaa tt;
    for(i=0;i<M;i++)
    {
        tt.a=B[i];
        tt.b=L[i];
        tt.c=C[i];
        Next[A[i]].push_back(tt);
        tt.a=A[i];
        Next[B[i]].push_back(tt);
    }
    for(i=0;i<N;i++) for(j=0;j<N;j++) DP[i][j]=make_pair(100,0);
    for(i=0;i<N;i++)
    {
        DP[i][i]=make_pair(0,0);
        vis[i]=-1;
    }
    for(i=0;i<N;i++)
    {
        dij.push(make_pair(0,i));
        while(!dij.empty())
        {
            auto xx=dij.top();
            dij.pop();
            a=xx.first;
            b=xx.second;
            if(vis[b]==i) continue;
            vis[b]=i;
            DP[i][b]=make_pair(0,a);
            for(auto j:Next[b]) if(a+j.b<=j.c) dij.push(make_pair(a+j.b,j.a));
        }

    }
    for(k=0;k<N;k++) for(i=0;i<N;i++) for(j=0;j<N;j++) DP[i][j]=min(DP[i][j],DP[i][k]+DP[k][j]);
    for(i=0;i<N;i++) vis[i]=-1;
    for(i=0;i<Q;i++)
    {
        ans=make_pair(100,0);
        dij.push(make_pair(T[i],U[i]));
        while(!dij.empty())
        {
            auto xx=dij.top();
            dij.pop();
            a=xx.first;
            b=xx.second;
            //printf("%lld %lld %lld\n",a,b,vis[b]);
            if(vis[b]==i) continue;
            vis[b]=i;
            //printf("bb %lld %lld %lld %lld\n",b,a,DP[b][V[i]].first,DP[b][V[i]].second);
            //if(b==V[i]) ans=min(ans,make_pair((ll) 0,a));
            ans=min(ans,make_pair(0,a)+DP[b][V[i]]);
            for(auto j:Next[b]) if(a+j.b<=j.c) dij.push(make_pair(a+j.b,j.a));
        }
        //printf("aa %lld %lld %lld\n",ans.first,ans.second,T[i]);
        Ans.push_back(ans.first*S+ans.second-T[i]);
        //`printf("aa %lld\n",Ans[i]);
    }
    return Ans;
}

Compilation message

escape_route.cpp: In function 'std::vector<long long int> calculate_necessary_time(int, int, long long int, int, std::vector<int>, std::vector<int>, std::vector<long long int>, std::vector<long long int>, std::vector<int>, std::vector<int>, std::vector<long long int>)':
escape_route.cpp:27:18: warning: unused variable 'c' [-Wunused-variable]
   27 |     ll i,j,k,a,b,c;
      |                  ^
# 결과 실행 시간 메모리 Grader output
1 Correct 21 ms 65108 KB Output is correct
2 Correct 11 ms 65116 KB Output is correct
3 Correct 67 ms 65156 KB Output is correct
4 Correct 8 ms 65188 KB Output is correct
5 Correct 10 ms 65116 KB Output is correct
6 Correct 9 ms 65116 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 9035 ms 111956 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 21 ms 65108 KB Output is correct
2 Correct 11 ms 65116 KB Output is correct
3 Correct 67 ms 65156 KB Output is correct
4 Correct 8 ms 65188 KB Output is correct
5 Correct 10 ms 65116 KB Output is correct
6 Correct 9 ms 65116 KB Output is correct
7 Execution timed out 9035 ms 111956 KB Time limit exceeded
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 21 ms 65108 KB Output is correct
2 Correct 11 ms 65116 KB Output is correct
3 Correct 67 ms 65156 KB Output is correct
4 Correct 8 ms 65188 KB Output is correct
5 Correct 10 ms 65116 KB Output is correct
6 Correct 9 ms 65116 KB Output is correct
7 Execution timed out 9035 ms 111956 KB Time limit exceeded
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 21 ms 65108 KB Output is correct
2 Correct 11 ms 65116 KB Output is correct
3 Correct 67 ms 65156 KB Output is correct
4 Correct 8 ms 65188 KB Output is correct
5 Correct 10 ms 65116 KB Output is correct
6 Correct 9 ms 65116 KB Output is correct
7 Execution timed out 9035 ms 111956 KB Time limit exceeded
8 Halted 0 ms 0 KB -