Submission #1167720

#TimeUsernameProblemLanguageResultExecution timeMemory
1167720edga1Commuter Pass (JOI18_commuter_pass)C++20
0 / 100
88 ms1092 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")

using namespace std;

long long dist[305][305];

int main()
{
    //ios_base::sync_with_stdio(false);
    //cin.tie(0);
    int n,m,s,t,u,v;
    cin>>n>>m>>s>>t>>u>>v;
    int a=0;
    for(int i=1; i<=n; i++){
        for(int j=1; j<=n; j++){
            if(i==j) dist[i][j]=0;
            else dist[i][j]=-1;
        }
    }
    for(int i=0; i<m; i++){
        int a,b,c;
        cin>>a>>b>>c;
        dist[a][b]=c;
        dist[b][a]=c;
    }
    for(int i=1; i<=n; i++){
        for(int j=1; j<=n; j++){
            for(int z=1; z<=n; z++){
                if((dist[i][j]==-1 || dist[i][z]+dist[z][j]<dist[i][j]) && dist[i][z]!=-1 && dist[z][j]!=-1 ){
                    dist[i][j]=dist[i][z]+dist[z][j];
                }
            }
        }
    }
    long long r=-1;
    for(int i=1; i<=n; i++){
        for(int j=i+1; j<=n; j++){
            if(dist[s][t]==dist[s][i]+dist[i][j]+dist[j][t] || dist[s][t]==dist[s][j]+dist[j][i]+dist[i][t]){
                long long dv=min(dist[v][i],dist[v][j]), du=min(dist[u][i],dist[u][j]);
                if(r==-1 || dv+du<r) r=dv+du;
            }
        }
    }
    cout<<min(r,dist[u][v]);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...