답안 #762528

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
762528 2023-06-21T12:59:28 Z alexander707070 Sky Walking (IOI19_walk) C++14
10 / 100
4000 ms 888388 KB
#include<bits/stdc++.h>
#define MAXN 2000007
using namespace std;

const long long inf=1e16;

int n,m,z,minv,last,j; 
map< pair<int,int>, int > mp;
vector<int> w[MAXN];
vector< pair<int,int> > v[MAXN];
long long dist[MAXN];
priority_queue< pair<long long,int> , vector< pair<long long,int> > , greater< pair<long long,int> > > q; 
bool vis[MAXN];

void add_edge(int x,int y,int c){
    v[x].push_back({y,c});
    v[y].push_back({x,c});
}

void dijkstra(){
    for(int i=1;i<=z;i++){
        dist[i]=inf;
    }

    dist[1]=0;
    q.push({0,1});
    
    while(!q.empty()){
        minv=q.top().second;
        q.pop();

        if(vis[minv])continue;
        vis[minv]=true;

        for(int i=0;i<v[minv].size();i++){
            if(vis[v[minv][i].first] or dist[v[minv][i].first]<dist[minv]+v[minv][i].second)continue;
            dist[v[minv][i].first]=dist[minv]+v[minv][i].second;
            q.push({dist[v[minv][i].first],v[minv][i].first});
        }
    }
}

long long min_distance(vector<int> x,vector<int> h,vector<int> l,vector<int> r,vector<int> y,int s, int g){
    n=int(x.size()); m=int(l.size());

    mp[{x[s],0}]=1;
    mp[{x[g],0}]=2; 
    z=2;

    for(int i=0;i<m;i++){
        for(int f=l[i];f<=r[i];f++){
            if(h[f]<y[i])continue;
            z++; mp[{x[f],y[i]}]=z;
            w[f].push_back(y[i]);
        }
    }

    for(int i=0;i<n;i++){
        if(i==s or i==g)w[i].push_back(0);
        if(!w[i].empty())sort(w[i].begin(),w[i].end());

        for(int f=0;f<int(w[i].size())-1;f++){
            add_edge(mp[{x[i],w[i][f]}],mp[{x[i],w[i][f+1]}],w[i][f+1]-w[i][f]);
        }
    }


    for(int i=0;i<m;i++){
        last=-1;
        for(int f=l[i];f<=r[i];f++){
            if(h[f]<y[i])continue;
            if(last!=-1)add_edge(mp[{x[last],y[i]}],mp[{x[f],y[i]}],x[f]-x[last]);
            last=f;
        }
    }

    dijkstra();
    if(dist[2]==inf)return -1;
    return dist[2];
}
 
/*
int main(){
 
    //cout<<min_distance({0, 3, 5, 7, 10, 12, 14}, {8, 7, 9, 7, 6, 6, 9}, {0, 0, 0, 2, 2, 3, 4}, {1, 2, 6, 3, 6, 4, 6}, {1, 6, 8, 1, 7, 2, 5}, 1, 5)<<"\n";
    //cout<<min_distance({0, 4, 5, 6, 9}, {6, 6, 6, 6, 6},{3, 1, 0},{4, 3, 2},{1, 3, 6},0, 4)<<"\n";

    return 0;
}
*/

Compilation message

walk.cpp: In function 'void dijkstra()':
walk.cpp:35:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |         for(int i=0;i<v[minv].size();i++){
      |                     ~^~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 44 ms 94160 KB Output is correct
2 Correct 44 ms 94140 KB Output is correct
3 Correct 45 ms 94188 KB Output is correct
4 Correct 46 ms 94120 KB Output is correct
5 Correct 47 ms 94332 KB Output is correct
6 Correct 44 ms 94244 KB Output is correct
7 Correct 44 ms 94284 KB Output is correct
8 Correct 48 ms 94216 KB Output is correct
9 Correct 45 ms 94172 KB Output is correct
10 Correct 45 ms 94352 KB Output is correct
11 Correct 44 ms 94280 KB Output is correct
12 Correct 46 ms 94244 KB Output is correct
13 Correct 47 ms 94232 KB Output is correct
14 Correct 46 ms 94208 KB Output is correct
15 Correct 45 ms 94168 KB Output is correct
16 Correct 48 ms 94248 KB Output is correct
17 Correct 50 ms 94324 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 47 ms 94204 KB Output is correct
2 Correct 44 ms 94168 KB Output is correct
3 Correct 1341 ms 190752 KB Output is correct
4 Correct 1204 ms 192536 KB Output is correct
5 Correct 809 ms 177948 KB Output is correct
6 Correct 1580 ms 170084 KB Output is correct
7 Correct 758 ms 181552 KB Output is correct
8 Correct 1816 ms 219172 KB Output is correct
9 Correct 952 ms 181924 KB Output is correct
10 Correct 1671 ms 236784 KB Output is correct
11 Correct 644 ms 146552 KB Output is correct
12 Correct 300 ms 125740 KB Output is correct
13 Correct 1469 ms 219404 KB Output is correct
14 Execution timed out 4070 ms 122612 KB Time limit exceeded
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 135 ms 106328 KB Output is correct
2 Runtime error 2563 ms 888388 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 135 ms 106328 KB Output is correct
2 Runtime error 2563 ms 888388 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 44 ms 94160 KB Output is correct
2 Correct 44 ms 94140 KB Output is correct
3 Correct 45 ms 94188 KB Output is correct
4 Correct 46 ms 94120 KB Output is correct
5 Correct 47 ms 94332 KB Output is correct
6 Correct 44 ms 94244 KB Output is correct
7 Correct 44 ms 94284 KB Output is correct
8 Correct 48 ms 94216 KB Output is correct
9 Correct 45 ms 94172 KB Output is correct
10 Correct 45 ms 94352 KB Output is correct
11 Correct 44 ms 94280 KB Output is correct
12 Correct 46 ms 94244 KB Output is correct
13 Correct 47 ms 94232 KB Output is correct
14 Correct 46 ms 94208 KB Output is correct
15 Correct 45 ms 94168 KB Output is correct
16 Correct 48 ms 94248 KB Output is correct
17 Correct 50 ms 94324 KB Output is correct
18 Correct 47 ms 94204 KB Output is correct
19 Correct 44 ms 94168 KB Output is correct
20 Correct 1341 ms 190752 KB Output is correct
21 Correct 1204 ms 192536 KB Output is correct
22 Correct 809 ms 177948 KB Output is correct
23 Correct 1580 ms 170084 KB Output is correct
24 Correct 758 ms 181552 KB Output is correct
25 Correct 1816 ms 219172 KB Output is correct
26 Correct 952 ms 181924 KB Output is correct
27 Correct 1671 ms 236784 KB Output is correct
28 Correct 644 ms 146552 KB Output is correct
29 Correct 300 ms 125740 KB Output is correct
30 Correct 1469 ms 219404 KB Output is correct
31 Execution timed out 4070 ms 122612 KB Time limit exceeded
32 Halted 0 ms 0 KB -