Submission #388198

# Submission time Handle Problem Language Result Execution time Memory
388198 2021-04-10T13:27:51 Z BartolM Robot (JOI21_ho_t4) C++17
24 / 100
3000 ms 226180 KB
#define DEBUG 1
#include <bits/stdc++.h>

using namespace std;

#define X first
#define Y second
#define mp make_pair
#define pb push_back
typedef long long ll;
typedef pair <int, int> pii;
typedef pair <int, pii> pip;
typedef pair <pii, int> ppi;
typedef pair <ll, ll> pll;
typedef pair <int, ll> pil;
typedef pair <ll, int> pli;

const int INF=0x3f3f3f3f;
const int N=8e5+5;
const ll MAX=(ll)INF*INF;

int n, m, uk;
map <int, int> boja[N], koji[N], zbr[N];
ll dist[N];
vector <pil> ls[N];
set <pli> S;

void dijkstra() {
    fill(dist, dist+N, MAX);
    dist[1]=0;
    S.insert(mp(0, 1));
    while (!S.empty()) {
        pli node=*S.begin();
        S.erase(S.begin());
        for (pil sus:ls[node.Y]) {
            if (dist[sus.X]<=sus.Y+node.X) continue;
            if (S.count(mp(dist[sus.X], sus.X))) S.erase(mp(dist[sus.X], sus.X));
            dist[sus.X]=node.X+sus.Y;
            S.insert(mp(dist[sus.X], sus.X));
        }
    }
}

void solve() {
    uk=n+1;
    for (int i=1; i<=n; ++i) {
        for (int j=0; j<ls[i].size(); ++j) {
            pil sus=ls[i][j];
            if (sus.X>n) continue;
            int boj=boja[i][sus.X];
            if (!koji[i][boj]) {
                ls[i].pb(mp(uk, 0));
                koji[i][boj]=uk++;
            }
            int node=koji[i][boj];


            ls[sus.X].pb(mp(node, 0));
            ls[node].pb(mp(sus.X, zbr[i][boj]-sus.Y));
        }
    }
    dijkstra();
    printf("%lld\n", dist[n]>=MAX ? -1 : dist[n]);
}

void load() {
    scanf("%d %d", &n, &m);
    for (int i=0; i<m; ++i) {
        int a, b, boj, cos;
        scanf("%d %d %d %d", &a, &b, &boj, &cos);
        ls[a].pb(mp(b, cos)); ls[b].pb(mp(a, cos));
        boja[a][b]=boj;
        boja[b][a]=boj;
        zbr[a][boj]+=cos;
        zbr[b][boj]+=cos;
    }
}

int main() {
    load();
    solve();
    return 0;
}

Compilation message

Main.cpp: In function 'void solve()':
Main.cpp:47:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |         for (int j=0; j<ls[i].size(); ++j) {
      |                       ~^~~~~~~~~~~~~
Main.cpp: In function 'void load()':
Main.cpp:67:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   67 |     scanf("%d %d", &n, &m);
      |     ~~~~~^~~~~~~~~~~~~~~~~
Main.cpp:70:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   70 |         scanf("%d %d %d %d", &a, &b, &boj, &cos);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 97 ms 137928 KB Output is correct
2 Correct 97 ms 138052 KB Output is correct
3 Correct 88 ms 138008 KB Output is correct
4 Correct 85 ms 137932 KB Output is correct
5 Execution timed out 3099 ms 137988 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 429 ms 168200 KB Output is correct
2 Correct 220 ms 152680 KB Output is correct
3 Correct 519 ms 176628 KB Output is correct
4 Correct 276 ms 157892 KB Output is correct
5 Correct 1923 ms 226180 KB Output is correct
6 Correct 1549 ms 218840 KB Output is correct
7 Correct 1072 ms 213756 KB Output is correct
8 Correct 926 ms 202664 KB Output is correct
9 Correct 962 ms 202596 KB Output is correct
10 Correct 674 ms 187648 KB Output is correct
11 Correct 419 ms 172452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 97 ms 137928 KB Output is correct
2 Correct 97 ms 138052 KB Output is correct
3 Correct 88 ms 138008 KB Output is correct
4 Correct 85 ms 137932 KB Output is correct
5 Execution timed out 3099 ms 137988 KB Time limit exceeded
6 Halted 0 ms 0 KB -