Submission #563129

# Submission time Handle Problem Language Result Execution time Memory
563129 2022-05-16T10:51:27 Z jk410 Commuter Pass (JOI18_commuter_pass) C++17
100 / 100
345 ms 31200 KB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF=4e18;
struct edge{
    int v;
    ll cost;
    bool operator<(const edge &tmp)const{
        return cost>tmp.cost;
    }
};
int N,M,S,T,U,V;
vector<edge> Edge[100001];
vector<int> To[100001],From[100001];
ll Dist[100001],Dist_U[100001],Dist_V[100001],Min_U[100001],Min_V[100001];
int In_deg[100001];
bool Visited[100001];
queue<int> Q;
ll Ans;
void dijkstra(int st,ll *dist){
    for (int i=1; i<=N; i++)
        dist[i]=INF;
    dist[st]=0;
    priority_queue<edge> q;
    q.push({st,0});
    while (!q.empty()){
        edge t=q.top();
        q.pop();
        if (dist[t.v]<t.cost)
            continue;
        for (edge i:Edge[t.v]){
            if (dist[i.v]>t.cost+i.cost){
                dist[i.v]=t.cost+i.cost;
                q.push({i.v,dist[i.v]});
            }
        }
    }
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>N>>M>>S>>T>>U>>V;
    while (M--){
        int a,b,c;
        cin>>a>>b>>c;
        Edge[a].push_back({b,c});
        Edge[b].push_back({a,c});
    }
    dijkstra(S,Dist);
    dijkstra(U,Dist_U);
    dijkstra(V,Dist_V);
    Q.push(T);
    while (!Q.empty()){
        int v=Q.front();
        Q.pop();
        if (Visited[v])
            continue;
        Visited[v]=true;
        for (edge i:Edge[v]){
            if (Dist[v]==Dist[i.v]+i.cost){
                To[i.v].push_back(v);
                From[v].push_back(i.v);
                In_deg[v]++;
                Q.push(i.v);
            }
        }
    }
    Min_U[0]=Min_V[0]=Dist_U[0]=Dist_V[0]=INF;
    From[S].push_back(0);
    Ans=Dist_U[V];
    Q.push(S);
    while (!Q.empty()){
        int v=Q.front();
        Q.pop();
        Min_U[v]=Min_V[v]=INF;
        for (int i:From[v]){
            Min_U[v]=min({Min_U[v],Min_U[i],Dist_U[i]});
            Min_V[v]=min({Min_V[v],Min_V[i],Dist_V[i]});
        }
        Ans=min({Ans,Min_U[v]+Dist_V[v],Min_V[v]+Dist_U[v]});
        for (int i:To[v]){
            if (--In_deg[i]==0)
                Q.push(i);
        }
    }
    cout<<Ans;
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 216 ms 23204 KB Output is correct
2 Correct 238 ms 23476 KB Output is correct
3 Correct 343 ms 29336 KB Output is correct
4 Correct 214 ms 26880 KB Output is correct
5 Correct 243 ms 28044 KB Output is correct
6 Correct 234 ms 27224 KB Output is correct
7 Correct 316 ms 28820 KB Output is correct
8 Correct 262 ms 28300 KB Output is correct
9 Correct 223 ms 26200 KB Output is correct
10 Correct 181 ms 26148 KB Output is correct
11 Correct 144 ms 21324 KB Output is correct
12 Correct 249 ms 26136 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 244 ms 23112 KB Output is correct
2 Correct 246 ms 23464 KB Output is correct
3 Correct 276 ms 23288 KB Output is correct
4 Correct 316 ms 23364 KB Output is correct
5 Correct 260 ms 23836 KB Output is correct
6 Correct 250 ms 25224 KB Output is correct
7 Correct 295 ms 25540 KB Output is correct
8 Correct 303 ms 23360 KB Output is correct
9 Correct 261 ms 23860 KB Output is correct
10 Correct 283 ms 23204 KB Output is correct
11 Correct 130 ms 20556 KB Output is correct
12 Correct 253 ms 25472 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 9180 KB Output is correct
2 Correct 5 ms 7380 KB Output is correct
3 Correct 5 ms 7380 KB Output is correct
4 Correct 19 ms 10836 KB Output is correct
5 Correct 11 ms 9140 KB Output is correct
6 Correct 6 ms 7508 KB Output is correct
7 Correct 6 ms 7508 KB Output is correct
8 Correct 6 ms 7636 KB Output is correct
9 Correct 5 ms 7508 KB Output is correct
10 Correct 11 ms 9044 KB Output is correct
11 Correct 4 ms 7380 KB Output is correct
12 Correct 4 ms 7416 KB Output is correct
13 Correct 4 ms 7380 KB Output is correct
14 Correct 4 ms 7380 KB Output is correct
15 Correct 4 ms 7420 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 216 ms 23204 KB Output is correct
2 Correct 238 ms 23476 KB Output is correct
3 Correct 343 ms 29336 KB Output is correct
4 Correct 214 ms 26880 KB Output is correct
5 Correct 243 ms 28044 KB Output is correct
6 Correct 234 ms 27224 KB Output is correct
7 Correct 316 ms 28820 KB Output is correct
8 Correct 262 ms 28300 KB Output is correct
9 Correct 223 ms 26200 KB Output is correct
10 Correct 181 ms 26148 KB Output is correct
11 Correct 144 ms 21324 KB Output is correct
12 Correct 249 ms 26136 KB Output is correct
13 Correct 244 ms 23112 KB Output is correct
14 Correct 246 ms 23464 KB Output is correct
15 Correct 276 ms 23288 KB Output is correct
16 Correct 316 ms 23364 KB Output is correct
17 Correct 260 ms 23836 KB Output is correct
18 Correct 250 ms 25224 KB Output is correct
19 Correct 295 ms 25540 KB Output is correct
20 Correct 303 ms 23360 KB Output is correct
21 Correct 261 ms 23860 KB Output is correct
22 Correct 283 ms 23204 KB Output is correct
23 Correct 130 ms 20556 KB Output is correct
24 Correct 253 ms 25472 KB Output is correct
25 Correct 11 ms 9180 KB Output is correct
26 Correct 5 ms 7380 KB Output is correct
27 Correct 5 ms 7380 KB Output is correct
28 Correct 19 ms 10836 KB Output is correct
29 Correct 11 ms 9140 KB Output is correct
30 Correct 6 ms 7508 KB Output is correct
31 Correct 6 ms 7508 KB Output is correct
32 Correct 6 ms 7636 KB Output is correct
33 Correct 5 ms 7508 KB Output is correct
34 Correct 11 ms 9044 KB Output is correct
35 Correct 4 ms 7380 KB Output is correct
36 Correct 4 ms 7416 KB Output is correct
37 Correct 4 ms 7380 KB Output is correct
38 Correct 4 ms 7380 KB Output is correct
39 Correct 4 ms 7420 KB Output is correct
40 Correct 265 ms 26924 KB Output is correct
41 Correct 227 ms 26076 KB Output is correct
42 Correct 223 ms 26148 KB Output is correct
43 Correct 181 ms 25036 KB Output is correct
44 Correct 156 ms 25016 KB Output is correct
45 Correct 323 ms 31184 KB Output is correct
46 Correct 325 ms 31036 KB Output is correct
47 Correct 222 ms 26904 KB Output is correct
48 Correct 158 ms 24396 KB Output is correct
49 Correct 195 ms 26644 KB Output is correct
50 Correct 297 ms 29808 KB Output is correct
51 Correct 345 ms 31200 KB Output is correct