QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#672062#2879. Kaleidoscopic RouteFolity#AC ✓70ms18088kbC++202.3kb2024-10-24 15:29:462024-10-24 15:29:47

Judging History

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

  • [2024-10-24 15:29:47]
  • 评测
  • 测评结果:AC
  • 用时:70ms
  • 内存:18088kb
  • [2024-10-24 15:29:46]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;

const int N=1e5+5,M=2e5+5;
int n,m,x[M],y[M],z[M];
vector<pii> e[N];
int diss[N],dist[N],d[N];
void adde(int x,int y,int z){
    e[x].emplace_back(y,z);
}
int f[N],g[N],pf[N],pg[N],nu,nv;
bool fl;
int pre[N];
bool vis[N];

int main(){
    ios::sync_with_stdio(0);cin.tie(0);
    cin>>n>>m;
    for(int i=1;i<=m;++i){
        cin>>x[i]>>y[i]>>z[i];
        adde(x[i],y[i],z[i]),adde(y[i],x[i],z[i]);
    }
    queue<int> q;
    q.push(1);
    diss[1]=1;
    while(!q.empty()){
        int u=q.front();
        q.pop();
        for(auto &[v,w]:e[u]){
            if(!diss[v])diss[v]=diss[u]+1,q.push(v);
        }
    }
    q.push(n);
    dist[n]=1;
    while(!q.empty()){
        int u=q.front();
        q.pop();
        for(auto &[v,w]:e[u]){
            if(!dist[v])dist[v]=dist[u]+1,q.push(v);
        }
    }
    cout<<diss[n]-1<<'\n';
    if(diss[n]==2){
        cout<<"1 "<<n<<'\n';
        return 0;
    }
    for(int i=1;i<=n;++i)e[i].clear();
    for(int i=1;i<=m;++i){
        if(diss[x[i]]+dist[y[i]]==diss[n])adde(x[i],y[i],z[i]),++d[y[i]];
        if(diss[y[i]]+dist[x[i]]==diss[n])adde(y[i],x[i],z[i]),++d[x[i]];
    }
    for(int i=2;i<=n;++i)f[i]=1e9,g[i]=-1e9;
    for(auto &[v,w]:e[1])f[v]=g[v]=w,pf[v]=pg[v]=1,q.push(v),--d[v];
    int ans=0;
    while(!q.empty()){
        int u=q.front();
        q.pop();
        for(auto &[v,w]:e[u]){
            if(w-f[u]>ans)ans=w-f[u],nu=u,nv=v,fl=0;
            if(g[u]-w>ans)ans=g[u]-w,nu=u,nv=v,fl=1;
            if(min(f[u],w)<f[v])f[v]=min(f[u],w),pf[v]=u;
            if(max(g[u],w)>g[v])g[v]=max(g[u],w),pg[v]=u;
            if(!--d[v])q.push(v);
        }
    }
    vector<int> ansl,ansr;
    ansl.push_back(nu);
    if(!fl){
        while(nu!=1)nu=pf[nu],ansl.push_back(nu);
    }
    else{
        while(nu!=1)nu=pg[nu],ansl.push_back(nu);
    }
    q.push(nv),vis[nv]=1;
    while(!q.empty()){
        int u=q.front();
        q.pop();
        for(auto &[v,w]:e[u])if(!vis[v])q.push(v),vis[v]=1,pre[v]=u;
    }
    ansr.push_back(n);
    int nw=n;
    while(nw!=nv)nw=pre[nw],ansr.push_back(nw);
    for(int i=ansl.size()-1;i>=0;--i)cout<<ansl[i]<<' ';
    for(int i=ansr.size()-1;i>=0;--i)cout<<ansr[i]<<' ';
    cout<<'\n';
}

详细

Test #1:

score: 100
Accepted
time: 2ms
memory: 7724kb

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: 0ms
memory: 7932kb

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: 7608kb

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: 1ms
memory: 7608kb

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: 5864kb

input:

2 1
2 1 33

output:

1
1 2

result:

ok 1 0

Test #6:

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

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: 5ms
memory: 8532kb

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: 17ms
memory: 11040kb

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: 35ms
memory: 13656kb

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: 46ms
memory: 14888kb

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: 60ms
memory: 14604kb

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: 33ms
memory: 14328kb

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: 68ms
memory: 17600kb

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 2571 56736 29497 58423 6051 37743 51844 23302 29733 41105 56046 12044 1565 51025 48844 64724 37213 18734 5756 46347 55942 1844 32369 16643 70641 11975 7764 75672 26240 77209 595 36070 22280 30477 77122 9062 37558 51430 8185 18794 68680 21984 42 22635 59845 75098 2378 49299 77548 41180 33473 ...

result:

ok 10001 999977783

Test #14:

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

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 9114 39981 36827 8635 11393 21971 17676 8608 52642 11475 333 29932 6915 2327 30294 43452 10730 39062 8648 26267 15587 50398 30285 28809 47981 30603 6374 41869 14697 1368 7211 32240 14335 44473 26711 56215 7801 55451 11708 11918 37960...

result:

ok 3001 999993516

Test #15:

score: 0
Accepted
time: 60ms
memory: 16688kb

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 57442 20676 29999 34412 26870 25550 43470 21379 30130 22974 14530 52810 58074 31914 11634 8707 1234 27800 44749 53899 53600 23997 16005 24052 47302 47184 38917 42186 51938 16704 42787 15504 9689 15857 1581 26531 58552 2983 49826 32070 30155 49208 53616 2357 34338 23023 10032 22711 30395 9747 ...

result:

ok 1001 999983190

Test #16:

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

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 54472 53080 11468 44695 50808 14534 16217 18687 22107 42219 53273 42409 50230 57859 44845 46755 52066 4899 18111 30241 27511 25718 17801 28255 36688 38180 53675 17510 10411 5896 59816 12614 57800 1167 21038 49479 37913 29734 15662 52157 13587 9493 43951 46075 49990 29713 18172 24228 54321 3908...

result:

ok 101 999995626

Test #17:

score: 0
Accepted
time: 69ms
memory: 18088kb

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 27752 16339 59256 8172 23018 39415 52735 83385 471 22088 501 84979 7621 55758 57355 78082 45921 79103 890...

result:

ok 38017 999988667

Test #18:

score: 0
Accepted
time: 35ms
memory: 14712kb

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: 49ms
memory: 14280kb

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: 59ms
memory: 15440kb

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 49967 7133 30043 14511 5307 26230 57060 56124 34003 30640 36429 45067 11853 6703 26311 36538 17068 10236 55516 10734 41586 3196 5974 14170 95 40862 19404 41291 113...

result:

ok 12963 999980538

Test #21:

score: 0
Accepted
time: 60ms
memory: 15988kb

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 2423 31422 35479 32626 43342 21083 4910 26713 42182 16330 29670 19702 6229 39725 46541 35736 27017 32366 7102 31177 23247 12257 6770 41069 33103 51831 18492 23444 9899 21239 23454 59083 12352 22595 49945 32631 55261 44601 8948 27503 40113 40882 55810 1231 1...

result:

ok 6853 999981487

Test #22:

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

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 7542 24380 21257 15738 30839 16449 58893 59627 21374 33026 16736 27893 25717 15876 45163 3919 12503 25749 4603 15500 31447 36723 23796 29922 12575 53173 15728 30643 509 2929 30035 3252 1567 54278 27210 35020 18880 9371 58825 1987 27181 5794 22690 33468 18595 31903 55321 58297 18234 33238 11733...

result:

ok 696 999850312

Test #23:

score: 0
Accepted
time: 28ms
memory: 14128kb

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