Submission details
Task:Investing
Sender:Hornet's Multithreading
Submission time:2025-11-08 14:13:38 +0200
Language:C++ (C++17)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.00 sdetails
#7ACCEPTED0.00 sdetails
#8ACCEPTED0.00 sdetails
#9ACCEPTED0.00 sdetails
#10ACCEPTED0.00 sdetails
#11ACCEPTED0.00 sdetails
#12ACCEPTED0.00 sdetails
#13ACCEPTED0.00 sdetails
#14ACCEPTED0.00 sdetails
#15ACCEPTED0.00 sdetails
#16ACCEPTED0.00 sdetails
#17ACCEPTED0.00 sdetails
#18ACCEPTED0.00 sdetails
#19ACCEPTED0.00 sdetails
#20ACCEPTED0.01 sdetails
#21ACCEPTED0.01 sdetails
#22ACCEPTED0.03 sdetails
#23ACCEPTED0.00 sdetails
#24ACCEPTED0.01 sdetails
#25ACCEPTED0.01 sdetails
#26ACCEPTED0.02 sdetails
#27ACCEPTED0.03 sdetails
#28ACCEPTED0.00 sdetails
#29ACCEPTED0.02 sdetails
#30ACCEPTED0.00 sdetails
#31ACCEPTED0.03 sdetails
#32ACCEPTED0.00 sdetails
#33ACCEPTED0.04 sdetails
#34ACCEPTED0.01 sdetails
#35ACCEPTED0.01 sdetails
#36ACCEPTED0.01 sdetails
#37ACCEPTED0.01 sdetails
#38ACCEPTED0.01 sdetails

Code

#include <bits/stdc++.h>
using namespace std;

#define rep(i, a, b) for(int i = a; i < (b); i++)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;

const ll inf = LLONG_MAX;
struct Ed { int a,b,w,s() { return a<b?a:-a; }};
struct Node {ll dist=inf; int prev=-1;};

void bellmanFord(vector<Node>&nodes, vector<Ed>&eds, int s) {
    nodes[s].dist=0;
    sort(all(eds),[](Ed a, Ed b){ return a.s()<b.s();});

    int lim=sz(nodes)/2+2;
    rep(i,0,lim) for(Ed ed:eds){
        Node cur=nodes[ed.a], &dest=nodes[ed.b];
        if(abs(cur.dist)==inf)continue;
        ll d=cur.dist+ed.w;
        if(d<dest.dist){
            dest.prev=ed.a;
            dest.dist=(i<lim-1 ? d : -inf);
        }
    }
    rep(i,0,lim) for(Ed ed:eds){
        if(nodes[ed.a].dist==-inf){
            nodes[ed.b].dist=-inf;
        }
    }
}
int main() {
    cin.tie(0)->sync_with_stdio(0);
    cin.exceptions(cin.failbit);
    int n,m,a,b;
    cin >> n >> m >> a >> b;
    a--;
    b--;
    vector<Ed> e(m);
    vector<Node> nodes(n);
    for (int i = 0; i < m; i++) {
        cin >> e[i].a >> e[i].b >> e[i].w;
        e[i].a--;
        e[i].b--;
        e[i].w = -e[i].w;
    }
    bellmanFord(nodes, e, a);
    if(nodes[b].dist==-inf){
        cout<<"INFINITE MONEY GLITCH";
    }else if(nodes[b].dist==inf){
        cout <<"IMPOSSIBLE";
    }else{
        cout<<-nodes[b].dist;
    }
}

Test details

Test 1

Verdict: ACCEPTED

input
3 3 1 2
3 2 200
1 2 -100
1 3 -100

correct output
100

user output
100

Test 2

Verdict: ACCEPTED

input
5 5 4 3
5 2 -62
5 4 -93
3 1 -223
2 1 132
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 3

Verdict: ACCEPTED

input
5 5 5 3
5 1 72
1 2 269
4 3 -285
4 1 -48
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 4

Verdict: ACCEPTED

input
5 5 3 4
3 4 -176
4 1 -289
5 1 -228
2 5 125
...

correct output
-176

user output
-176

Test 5

Verdict: ACCEPTED

input
5 10 5 4
4 2 -181
1 4 157
1 3 111
1 5 7
...

correct output
-98

user output
-98

Test 6

Verdict: ACCEPTED

input
5 10 2 5
4 5 -245
4 5 138
4 5 215
3 2 -165
...

correct output
357

user output
357

Test 7

Verdict: ACCEPTED

input
5 10 1 5
3 4 136
3 1 -130
2 4 -280
5 4 -249
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 8

Verdict: ACCEPTED

input
5 10 4 1
3 1 -2
5 1 215
4 2 166
4 1 -279
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 9

Verdict: ACCEPTED

input
5 10 5 1
1 5 -224
1 4 -220
4 2 -1
4 5 -214
...

correct output
-79

user output
-79

Test 10

Verdict: ACCEPTED

input
5 10 2 1
1 4 -299
1 2 -39
4 5 81
4 1 -56
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 11

Verdict: ACCEPTED

input
5 10 4 4
5 3 -174
5 2 -46
5 1 -210
2 1 -80
...

correct output
0

user output
0

Test 12

Verdict: ACCEPTED

input
5 10 4 2
4 5 -218
4 2 -30
4 1 -218
2 4 -64
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 13

Verdict: ACCEPTED

input
10 30 9 7
3 8 39
4 8 -39
4 6 -38
10 7 -178
...

correct output
-93

user output
-93

Test 14

Verdict: ACCEPTED

input
10 30 3 10
3 6 -1
3 8 -300
3 9 -143
7 2 -5
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 15

Verdict: ACCEPTED

input
10 30 7 8
8 4 -53
5 3 -87
5 1 -266
5 2 -277
...

correct output
-61

user output
-61

Test 16

Verdict: ACCEPTED

input
10 30 8 9
2 9 -37
5 3 -259
5 2 -222
7 1 -184
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 17

Verdict: ACCEPTED

input
4 5 3 1
4 2 -107
4 1 -300
2 4 108
3 1 300
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 18

Verdict: ACCEPTED

input
4 4 3 2
1 4 -177
4 1 178
3 2 300
3 4 -300

correct output
300

user output
300

Test 19

Verdict: ACCEPTED

input
100 1000 95 59
17 33 -154
17 32 68
17 65 71
17 9 -284
...

correct output
-13

user output
-13

Test 20

Verdict: ACCEPTED

input
100 10000 95 70
49 84 -186
49 65 120
49 76 -38
49 66 27
...

correct output
11333

user output
11333

Test 21

Verdict: ACCEPTED

input
1000 1000 942 532
211 103 0
65 459 266
132 809 -167
538 228 -206
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 22

Verdict: ACCEPTED

input
1000 10000 356 204
831 540 180
77 237 -170
77 284 -62
77 431 -233
...

correct output
2015

user output
2015

Test 23

Verdict: ACCEPTED

input
100 1000 43 74
7 83 101
7 71 -207
7 14 76
83 71 235
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 24

Verdict: ACCEPTED

input
100 10000 65 38
49 17 114
49 15 -56
49 50 -139
49 77 205
...

correct output
4259

user output
4259

Test 25

Verdict: ACCEPTED

input
1000 1000 130 119
306 321 288
250 624 58
724 994 193
924 126 271
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 26

Verdict: ACCEPTED

input
1000 10000 520 842
992 359 30
992 751 -79
992 473 86
992 132 184
...

correct output
5168

user output
5168

Test 27

Verdict: ACCEPTED

input
1000 10000 954 5
95 364 229
95 386 -23
95 516 40
95 385 188
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 28

Verdict: ACCEPTED

input
100 1000 10 44
87 45 -54
87 5 -174
87 43 -45
87 54 -72
...

correct output
-115

user output
-115

Test 29

Verdict: ACCEPTED

input
1000 10000 216 836
503 408 -244
438 4 -245
438 351 -210
438 797 -80
...

correct output
-251

user output
-251

Test 30

Verdict: ACCEPTED

input
100 1000 35 52
81 36 -69
81 19 -271
81 87 -78
86 9 -119
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 31

Verdict: ACCEPTED

input
1000 10000 237 361
274 53 -54
274 678 -68
723 853 -191
723 858 -86
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 32

Verdict: ACCEPTED

input
100 1000 54 13
35 66 -59
35 92 -229
35 28 -211
35 58 -232
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 33

Verdict: ACCEPTED

input
1000 10000 230 928
94 30 -61
94 594 -43
94 338 -123
827 422 -146
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 34

Verdict: ACCEPTED

input
1000 1001 917 438
494 421 -150
494 917 -300
421 494 151
998 438 300
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 35

Verdict: ACCEPTED

input
1000 1001 183 711
197 383 -109
197 711 -300
383 197 110
570 711 300
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 36

Verdict: ACCEPTED

input
1000 1001 43 622
622 786 -300
983 786 -73
983 43 -300
786 983 74
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 37

Verdict: ACCEPTED

input
1000 1001 116 939
320 700 -51
320 734 -300
700 320 52
425 939 300
...

correct output
INFINITE MONEY GLITCH

user output
INFINITE MONEY GLITCH

Test 38

Verdict: ACCEPTED

input
1000 1000 7 836
973 309 79
309 973 -78
56 836 300
489 56 300
...

correct output
299100

user output
299100