Submission #42114

# Submission time Handle Problem Language Result Execution time Memory
42114 2018-02-22T16:48:55 Z nonocut Commuter Pass (JOI18_commuter_pass) C++14
0 / 100
13 ms 2168 KB
#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define pb push_back
#define X first
#define Y second
const int maxn = 305;
const ll inf = 1e18;

struct node {
    int x;
    ll val;
    node(int _x = 0, ll _val = 0) {
        x = _x; val = _val;
    };
    bool operator < (node a) const {
        return a.val<val;
    }
};

int n,m,a,b,c,d;

bool vis[maxn];
ll dist[maxn], da[maxn], db[maxn], dc[maxn], dd[maxn];
vector<pair<int,ll>> way[maxn];
priority_queue<node> heap;

vector<int> from[maxn];
ll ans;

void sssp(int u) {
    for(int i=1;i<=n;i++) dist[i] = inf, vis[i] = 0;
    dist[u] = 0;
    heap.push(node(u,0));
    while(!heap.empty()) {
        int u = heap.top().x; heap.pop();
        if(vis[u]) continue;
        vis[u] = 1;
        for(auto t : way[u]) {
            if(dist[t.X] > dist[u] + t.Y) {
                dist[t.X] = dist[u] + t.Y;
                heap.push(node(t.X,dist[t.X]));
            }
        }
    }
}

void dag(int u) {
    vis[u] = 1;
    for(auto t : way[u]) {
        if(da[t.X] + t.Y == da[u]) from[t.X].pb(u);
        if(!vis[t.X]) dag(t.X);
    }
}

int main() {
    scanf("%d%d",&n,&m);
    scanf("%d%d%d%d",&a,&b,&c,&d);
    for(int i=0;i<m;i++) {
        int x,y; ll val;
        scanf("%d%d%lld",&x,&y,&val);
        way[x].pb({y,val}); way[y].pb({x,val});
    }
    sssp(a); for(int i=1;i<=n;i++) da[i] = dist[i];
    sssp(b); for(int i=1;i<=n;i++) db[i] = dist[i];
    sssp(c); for(int i=1;i<=n;i++) dc[i] = dist[i];
    sssp(d); for(int i=1;i<=n;i++) dd[i] = dist[i];
    for(int i=1;i<=n;i++) vis[i] = 0;
    dag(b);
    ans = dc[d];
    printf("%lld",ans);
}

Compilation message

commuter_pass.cpp: In function 'int main()':
commuter_pass.cpp:58: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:59: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:62: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 time Memory Grader output
1 Runtime error 2 ms 376 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 2 ms 624 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 13 ms 2168 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 2 ms 376 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -