Submission #42106

#TimeUsernameProblemLanguageResultExecution timeMemory
42106nonocutCommuter Pass (JOI18_commuter_pass)C++14
24 / 100
73 ms1388 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 305;
const ll inf = 1e18;
int n,m,a,b,c,d;
ll dist[maxn][maxn];
int main() {
    int i,x,y,z;
    ll val;
    scanf("%d%d",&n,&m);
    if(n>300) return 0;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    for(x=1;x<=n;x++) {
        for(y=1;y<=n;y++) {
            if(x==y) dist[x][y] = 0;
            else dist[x][y] = inf;
        }
    }
    for(i=0;i<m;i++) {
        scanf("%d%d%lld",&x,&y,&val);
        dist[x][y] = min(dist[x][y], val);
        dist[y][x] = min(dist[y][x], val);
    }
    for(z=1;z<=n;z++) {
        for(x=1;x<=n;x++) {
            for(y=1;y<=n;y++) {
                dist[x][y] = min(dist[x][y], dist[x][z] + dist[z][y]);
            }
        }
    }
    ll ans = dist[c][d];
    for(x=1;x<=n;x++) {
        for(y=1;y<=n;y++) {
            if(dist[a][x] + dist[x][y] + dist[y][b] != dist[a][b]) continue;
//            printf("x = %d y = %d (%lld or %lld)\n",x,y,dist[x][c] + dist[y][d],dist[x][d] + dist[y][c]);
            ans = min(ans, dist[x][c] + dist[y][d]);
            ans = min(ans, dist[x][d] + dist[y][c]);
        }
    }
    printf("%lld",ans);
}

Compilation message (stderr)

commuter_pass.cpp: In function 'int main()':
commuter_pass.cpp:11:24: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&m);
                        ^
commuter_pass.cpp:13:34: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d%d%d",&a,&b,&c,&d);
                                  ^
commuter_pass.cpp:21:37: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%lld",&x,&y,&val);
                                     ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...