QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#189856#2879. Kaleidoscopic RouteBeevoAC ✓77ms17120kbC++202.6kb2023-09-28 00:45:162023-09-28 00:45:16

Judging History

你现在查看的是最新测评结果

  • [2023-09-28 00:45:16]
  • 评测
  • 测评结果:AC
  • 用时:77ms
  • 内存:17120kb
  • [2023-09-28 00:45:16]
  • 提交

answer

#include <bits/stdc++.h>

#define el '\n'
#define Beevo ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

typedef long long ll;
typedef long double ld;

using namespace std;

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

const int N = 1e5 + 5, INF = 1e9;

vector<pair<int, int>> g[N];
int n, m, dist[N][2], mn[N][2], preMn[N][2];

void pre() {
    for (int i = 1; i <= n; i++) {
        for (int j = 0; j < 2; j++) {
            mn[i][j] = INF;
            dist[i][j] = INF;
        }
    }
}

void dijMin(int u, int st) {
    priority_queue<pair<pair<int, int>, int>> pq;

    dist[u][st] = 0;
    preMn[u][st] = 0;
    pq.push({{0, -INF}, u});

    int c, curMn;
    while (pq.size()) {
        tie(c, curMn) = pq.top().first;

        u = pq.top().second;

        c *= -1, curMn *= -1;

        pq.pop();

        if (dist[u][st] != c || mn[u][st] != curMn)
            continue;

        for (auto &v: g[u]) {
            if (c + 1 < dist[v.first][st] || c + 1 == dist[v.first][st] && min(curMn, v.second) < mn[v.first][st]) {
                dist[v.first][st] = c + 1, mn[v.first][st] = min(curMn, v.second), preMn[v.first][st] = u;

                pq.push({{-dist[v.first][st], -mn[v.first][st]}, v.first});
            }
        }
    }
}

void testCase() {
    cin >> n >> m;

    int u, v, c;
    vector<pair<pair<int, int>, int>> edges;
    for (int i = 0; i < m; i++) {
        cin >> u >> v >> c;

        g[u].emplace_back(v, c);
        g[v].emplace_back(u, c);

        edges.push_back({{u, v}, c});
    }

    pre();

    dijMin(1, 0), dijMin(n, 1);

    int sol = -1;
    pair<int, int> e;
    for (auto &i: edges) {
        u = i.first.first, v = i.first.second, c = i.second;

        if (dist[u][0] + dist[v][1] + 1 == dist[n][0]) {
            int cur = i.second - min({mn[u][0], mn[v][1], i.second});

            if (cur > sol)
                sol = cur, e = {u, v};
        }

        swap(u, v);

        if (dist[u][0] + dist[v][1] + 1 == dist[n][0]) {
            int cur = i.second - min({mn[u][0], mn[v][1], i.second});

            if (cur > sol)
                sol = cur, e = {u, v};
        }
    }

    u = e.first, v = e.second;

    vector<int> p;
    while (v)
        p.push_back(v), v = preMn[v][1];

    reverse(p.begin(), p.end());

    while (u)
        p.push_back(u), u = preMn[u][0];

    reverse(p.begin(), p.end());

    cout << p.size() - 1 << el;

    for (auto &i: p)
        cout << i << ' ';
}

signed main() {
    Beevo

    int t = 1;
//    cin >> t;

    while (t--)
        testCase();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 8036kb

input:

6 8
1 5 2
5 2 5
3 5 4
1 3 10
3 4 6
4 5 7
4 6 8
2 6 1

output:

3
1 5 4 6 

result:

ok 3 6

Test #2:

score: 0
Accepted
time: 1ms
memory: 8092kb

input:

10 20
1 9 34
6 3 80
7 3 15
5 4 73
4 1 42
8 6 92
2 10 25
4 3 8
9 3 79
3 1 11
9 2 74
10 1 83
3 2 6
10 3 38
10 4 48
1 5 38
6 2 43
4 2 55
8 7 90
3 5 4

output:

1
1 10 

result:

ok 1 0

Test #3:

score: 0
Accepted
time: 1ms
memory: 8248kb

input:

24 65
22 11 519
2 4 585
8 17 647
1 11 464
13 4 596
12 10 733
24 21 106
1 14 345
23 5 430
2 3 137
16 7 891
16 4 807
14 3 465
4 22 532
16 9 346
21 8 859
18 15 631
9 5 914
19 17 729
1 2 546
5 15 43
2 12 349
19 9 642
13 3 441
20 15 359
21 11 645
9 14 992
4 23 9
23 9 34
24 16 117
16 18 349
10 22 285
22 5...

output:

2
1 11 24 

result:

ok 2 208

Test #4:

score: 0
Accepted
time: 0ms
memory: 7968kb

input:

53 123
43 38 999
7 24 718
6 33 393
16 15 734
21 39 604
27 15 828
45 31 747
23 4 538
14 41 224
38 9 756
12 36 574
12 13 624
7 34 649
17 53 309
38 33 825
1 36 273
38 21 81
36 11 680
14 8 649
12 24 346
21 49 921
1 47 612
11 39 648
41 35 271
15 24 36
29 3 980
29 28 295
15 21 236
27 8 853
22 6 532
3 14 9...

output:

2
1 52 53 

result:

ok 2 482

Test #5:

score: 0
Accepted
time: 1ms
memory: 7560kb

input:

2 1
2 1 33

output:

1
1 2 

result:

ok 1 0

Test #6:

score: 0
Accepted
time: 1ms
memory: 8204kb

input:

123 1032
49 28 6306
70 79 6579
24 47 3306
102 114 7381
78 34 4078
31 92 2591
114 65 7836
92 59 7583
110 51 4384
84 99 439
78 48 77
23 77 6225
96 69 2939
55 112 45
48 29 4735
27 18 4242
117 97 395
71 64 2979
102 36 9531
20 86 7795
11 5 3142
114 107 1188
62 106 6321
6 71 2974
102 96 4240
82 13 7488
95...

output:

2
1 93 123 

result:

ok 2 5258

Test #7:

score: 0
Accepted
time: 6ms
memory: 8096kb

input:

1342 23134
757 512 65447
281 782 35017
179 633 86323
707 635 20673
1225 962 76138
986 59 62123
29 482 39870
90 265 65928
572 1028 18186
810 568 89715
469 998 95978
583 641 63660
261 208 37031
775 1131 33707
161 702 33733
1340 726 67611
548 583 9224
1100 208 82846
227 486 60094
1070 565 49959
1285 11...

output:

3
1 669 616 1342 

result:

ok 3 93825

Test #8:

score: 0
Accepted
time: 11ms
memory: 10060kb

input:

5313 87123
3239 37 964433
3078 247 435023
1830 493 489819
4478 1661 914186
750 2703 353434
3853 1072 285309
2117 1377 641750
1254 4366 734040
2222 2191 362794
3461 2267 359296
2514 913 627160
878 1006 709645
1767 3791 250153
4845 4041 339269
3270 2061 26968
2421 660 798388
262 1399 974636
5120 4171 ...

output:

3
1 3463 3294 5313 

result:

ok 3 878139

Test #9:

score: 0
Accepted
time: 41ms
memory: 15056kb

input:

12313 173254
4620 6513 380927
4465 6551 243296
615 9825 794381
338 11211 368032
4571 9567 634707
3731 7430 87826
8106 7718 998064
4146 7848 922789
3966 1263 331881
9179 646 948846
11893 5020 883102
5612 10513 898068
3451 3435 451139
9640 1947 1353
12271 9668 283149
9742 5631 884826
6837 2449 309976
...

output:

3
1 1402 3350 12313 

result:

ok 3 497061

Test #10:

score: 0
Accepted
time: 55ms
memory: 16148kb

input:

23532 200000
21979 22532 52608855
17378 1428 55313979
12897 6506 2960978
21412 2936 26201355
1327 21400 71454522
6940 9953 7548221
15846 15164 69193724
22756 8774 49306072
10793 7975 94773768
15722 221 88298496
274 22685 29319966
21564 10196 30589888
2895 9073 93905131
8310 22526 13817682
1565 2616 ...

output:

4
1 18111 9089 18380 23532 

result:

ok 4 93767115

Test #11:

score: 0
Accepted
time: 70ms
memory: 16972kb

input:

56043 200000
8956 48459 891115255
34699 29270 626119743
15612 49268 833711278
35090 40312 12951690
27544 40981 509660868
32984 29979 910590843
54449 18153 383011987
36405 52382 871189321
22735 40079 205544352
1579 34250 703531988
1733 44402 554010888
11931 21887 65967217
7150 29324 904513650
55402 4...

output:

6
1 27483 27883 37006 9501 26651 56043 

result:

ok 6 960310393

Test #12:

score: 0
Accepted
time: 56ms
memory: 13104kb

input:

100000 99999
16259 89189 677093403
78250 8073 458212862
57547 91624 275388547
61506 43428 213190761
19202 93628 867133431
39385 53296 668727622
16499 67293 611076654
41619 33235 854029781
13362 34905 113954233
52118 36368 107607827
10583 42580 534654035
86638 25330 709240484
52574 8418 111555367
767...

output:

13
1 32645 7845 51316 29812 10607 72877 5776 79952 16297 43702 9206 88402 100000 

result:

ok 13 861759213

Test #13:

score: 0
Accepted
time: 73ms
memory: 16524kb

input:

80000 200000
58330 43217 297444461
16896 51153 140513289
9385 49460 443143629
69429 43934 531903821
26079 74229 736987435
51036 31562 159062344
41578 13401 929067646
55379 23507 690768049
30121 23885 877254400
35892 23458 465046769
34835 48337 668330315
18408 46981 120331309
44840 17333 120558928
54...

output:

10001
1 42782 56736 20126 26894 2411 45175 77829 69460 1546 24002 69856 32621 35991 21161 44987 37676 49363 74887 52428 71236 66404 77627 74377 72880 54862 58105 78034 75672 46161 77209 58156 61819 42329 30477 77122 18795 77675 75559 3613 72113 33314 15161 17827 63327 55876 67713 58964 51644 62943 6...

result:

ok 10001 999977783

Test #14:

score: 0
Accepted
time: 75ms
memory: 15764kb

input:

60000 200000
33283 34451 984421794
1133 8529 735428179
49802 39150 2961459
35859 13866 164824146
53088 47966 338728371
51735 46841 957631316
35617 44579 765390527
31869 47907 947697615
32863 18985 25810436
3919 33953 460709820
15114 27802 873789989
14839 33186 914923632
51128 13349 457123147
22376 1...

output:

3001
1 54964 12064 31748 20995 35577 40188 50045 58670 31821 50806 44364 37256 50972 17382 21015 40557 59880 38362 10208 52001 34857 50551 39516 52484 57756 32526 57135 45693 39336 57886 15587 50398 55226 29689 55755 59168 48592 51941 45315 45639 54344 51015 38880 51237 57966 56421 50959 57468 38109...

result:

ok 3001 999993516

Test #15:

score: 0
Accepted
time: 63ms
memory: 15584kb

input:

60000 200000
26678 49495 904791977
32890 59699 399754622
12897 26396 947764101
20181 36060 919392167
44765 28112 626361389
20759 621 664654420
47334 52456 433569123
48369 19294 21978034
53174 8666 493354982
19124 57914 897565679
57051 48397 126735315
44750 56723 542440811
58365 39921 299193613
47535...

output:

1001
1 38675 58318 41456 34834 30039 16360 808 7721 18292 23583 29807 50527 51779 50257 52873 57980 30568 56414 50290 54348 417 57598 25878 47253 55789 49003 48470 58156 22987 34894 51573 54790 48919 29873 44605 40299 53852 27388 25648 1530 20673 43759 46338 33270 49092 38921 44493 54451 52620 3902 ...

result:

ok 1001 999983190

Test #16:

score: 0
Accepted
time: 77ms
memory: 15892kb

input:

60000 200000
13030 38329 743952825
12152 25060 344237987
5142 49370 883991906
46162 353 24332994
23681 44887 192607371
29905 55905 2537031
60000 49101 932618139
32702 45796 289202695
23051 41656 727218918
16650 2928 788402888
48744 9687 107198229
6033 9276 870216942
52085 29079 468002227
47038 4289 ...

output:

101
1 2113 40946 15825 8047 1151 15686 54938 2687 14530 4744 36484 48269 11528 46921 57104 44157 58968 50201 7597 27186 50340 37032 13004 31705 29278 53407 8297 40892 28524 48882 17429 55497 33509 33693 39426 3648 53596 5354 55859 38639 33630 47816 25509 49800 56694 53206 18172 24228 54321 56944 278...

result:

ok 101 999995626

Test #17:

score: 0
Accepted
time: 66ms
memory: 17120kb

input:

100000 200000
7896 67005 744335823
85405 32336 702280723
932 10230 692822561
28090 13617 935482306
13719 79962 309957027
60358 66039 604973007
49580 98941 669698279
1601 38911 929879781
35115 49689 748307599
70574 40830 441539342
4234 27200 214000427
20461 27894 634342248
19920 34635 502770262
49809...

output:

38017
1 28852 95874 9812 54966 75438 47471 94209 32680 82983 4579 2166 15386 54302 91762 83234 17839 96658 45337 99524 11093 91004 59139 527 76366 15151 85650 23512 63239 47343 52224 41139 76575 78324 73432 55734 43942 23018 39415 52735 83385 471 22088 501 84979 7621 55758 57355 78082 45921 79103 89...

result:

ok 38017 999988667

Test #18:

score: 0
Accepted
time: 44ms
memory: 13520kb

input:

100000 100000
47771 2245 858688810
19704 38623 123305252
72092 57928 629702105
19730 42283 503649158
3318 40645 865792740
70657 92619 158522375
36552 21529 702477909
13169 56667 37832573
55245 83413 207618733
88975 85459 949034495
2236 31719 841176310
14025 81513 915364558
12564 50044 744295428
3688...

output:

66680
1 76270 31837 98546 56329 34221 11994 73277 88130 98743 36600 73257 82763 15736 29585 9528 11683 38834 41176 72299 91764 18531 34459 1038 13635 40968 20488 804 60750 43126 91614 35120 98257 70185 97326 12284 85563 22265 84294 61459 64267 79230 94774 48844 56988 97737 86750 22835 91185 23623 17...

result:

ok 66680 999951042

Test #19:

score: 0
Accepted
time: 34ms
memory: 13132kb

input:

100000 99999
66977 30908 949435071
54190 72909 999205575
12113 33498 921933482
31601 57272 486107186
2532 81610 837858661
50855 92529 679975042
15525 36595 792129612
55428 54274 191405543
88797 99354 489731776
29479 1309 395259492
26559 56361 373252267
37689 27563 441866444
912 69903 258017542
3629 ...

output:

99999
1 1593 26569 95095 22126 68838 40403 40406 72740 76054 66745 95972 1017 25878 6716 37938 33253 44638 37523 36809 1302 86319 46378 14173 36723 40501 81729 14652 47035 90261 28649 52412 60433 2189 8358 36452 16254 31268 62705 96896 95387 81970 68488 91438 85220 96368 36270 89646 90044 63585 3877...

result:

ok 99999 999976813

Test #20:

score: 0
Accepted
time: 56ms
memory: 15340kb

input:

60000 200000
47285 10692 505691882
55541 58891 106240529
58919 52351 179647787
22993 38756 855676401
1188 21752 479331859
53804 20156 32533051
36571 51894 847819320
13732 16398 899099258
34870 11239 658097306
43221 34310 46804480
2396 16626 825241903
53718 18139 158174462
24822 35888 248874769
38814...

output:

12963
1 45834 55070 25674 16053 48458 37855 47668 22644 39419 39285 44823 1405 41401 47272 9879 13462 6285 27438 36566 23593 15797 26905 53893 7133 30043 14511 5307 26230 57060 56124 34003 53235 58950 35265 28110 29879 44181 36538 17068 38959 55516 10734 41586 3196 5974 14170 95 40862 23409 46312 11...

result:

ok 12963 999980538

Test #21:

score: 0
Accepted
time: 55ms
memory: 16472kb

input:

60000 200000
52075 45966 857582124
57572 4850 910824716
36159 50425 950606070
9851 34403 5047521
21825 21680 424988833
53325 44593 135616766
23579 36275 607428614
864 4421 991903370
54798 24959 706926183
19713 1269 755420688
27732 39509 234793607
15664 44127 163234400
10226 49453 658379227
39921 861...

output:

6853
1 39081 49146 25559 35202 46455 29564 30927 29275 59729 37033 18479 31951 3148 36538 16985 8110 29670 19702 6229 39725 46541 35736 27017 49241 23384 43261 33937 13992 6770 41069 33103 57191 41165 23444 9899 21239 23454 59083 20411 37 29570 48322 21521 50073 8948 53356 40113 40882 55810 1231 178...

result:

ok 6853 999981487

Test #22:

score: 0
Accepted
time: 66ms
memory: 15900kb

input:

60000 200000
1891 47162 951536190
36752 59437 440609838
59002 27483 924865044
13384 34668 194909776
9403 44772 573169297
15690 13096 653635499
17522 3611 411664894
20460 58639 710963529
41109 13541 354810632
16256 22124 899771391
13628 11173 231927636
13824 32461 275047309
39397 38605 1849131
20192 ...

output:

696
1 18730 24380 21257 15738 30839 16449 58893 59627 21374 33026 16736 27893 21050 46501 9724 7239 51087 54177 4603 15500 31447 36723 23796 29922 12575 53173 23681 7125 8296 56759 10312 700 8459 31673 55768 20191 10987 9218 18852 7730 33249 15975 25046 52088 15363 23424 35667 28147 22318 57252 5232...

result:

ok 696 999850312

Test #23:

score: 0
Accepted
time: 24ms
memory: 14004kb

input:

632 199396
520 52 920959168
625 184 3419342
387 412 429471383
83 163 185930246
530 428 63660253
631 447 521883183
261 602 466912409
340 419 539676608
308 131 760529469
333 488 204935294
582 272 755853621
59 116 129089400
584 76 197908036
285 107 255363470
595 352 367975615
152 201 737292798
347 297 ...

output:

1
1 632 

result:

ok 1 0