QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#19605#2178. RobotCharlieVinnie34 1162ms84244kbC++142.4kb2022-02-06 16:04:522022-05-06 06:16:57

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-05-06 06:16:57]
  • 评测
  • 测评结果:34
  • 用时:1162ms
  • 内存:84244kb
  • [2022-02-06 16:04:52]
  • 提交

answer

#include <bits/stdc++.h>
#define For(i,a,b) for(int i=a;i<=b;i++)
#define Rev(i,a,b) for(int i=a;i>=b;i--)
#define clr(a,v) memset(a,v,sizeof(a))
#define Fin(file) freopen(file".in","r",stdin)
#define Fout(file) freopen(file".out","w",stdout)
#define Fgen(file) freopen(file".in","w",stdout)
#define Fans(file) freopen(file".ans","w",stdout)
#define int long long
using namespace std;

const int N=4e5+5;

struct Node{
    int e,t,d;
    bool operator< (const Node& nd) const
    {
        return d>nd.d;
    }
};

int n,m,head[N],nxt[N],to[N],col[N],cst[N],tot;
unordered_map<int,int> csum[N],ccnt[N];
int dis[N][2],vis[N][2];
priority_queue<Node> q;

void add(int x,int y,int z,int w)
{
    nxt[++tot]=head[x];
    head[x]=tot;
    to[tot]=y;
    col[tot]=z;
    cst[tot]=w;
    csum[x][z]+=w;
    ccnt[x][z]++;
}

signed main()
{
    cin>>n>>m;
    
    tot=1;
    For(i,1,m){
        int x,y,z,w;
        cin>>x>>y>>z>>w;
        add(x,y,z,w);
        add(y,x,z,w);
    }
    
    clr(dis,0x3f);
    
    for(int e=head[1];e;e=nxt[e]){
        int cost=csum[1][col[e]]-cst[e];
        dis[e][0]=cost;
        q.push({e,0,cost});
        dis[e][1]=cst[e];
        q.push({e,1,cst[e]});
    }
    
    int ans=dis[0][0];
    
    while(q.size()){
        int e0=q.top().e,t=q.top().t; q.pop();
        if(vis[e0][t]) continue;
        vis[e0][t]=1;
        
        int u=to[e0];
        
        if(u==n) ans=min(ans,dis[e0][t]);
        
        for(int e=head[u];e;e=nxt[e]){
            if(e==(e0^1)) continue;
            
            int cost=csum[u][col[e]]-cst[e];
            if(col[e]==col[e0] && t) cost-=cst[e0];
            assert(cost>=0);
            
            if(!vis[e][0] && dis[e][0]>dis[e0][t]+cost){
                dis[e][0]=dis[e0][t]+cost;
                q.push({e,0,dis[e][0]});
            }
            
            
            if(!vis[e][1] && dis[e][1]>dis[e0][t]+cst[e]){
                dis[e][1]=dis[e0][t]+cst[e];
                q.push({e,1,dis[e][1]});
            }
        }
    }
    
    if(ans<dis[0][0]) cout<<ans<<endl;
    else cout<<-1<<endl;
    
    cerr<<"Time = "<<clock()<<" ms"<<endl;
    return 0;
}

/* stuff you should look for
    * int overflow, array bounds
    * special cases (n=1?)
    * do smth instead of nothing and stay organized
    * WRITE STUFF DOWN
    * DON'T GET STUCK ON ONE APPROACH
*/

详细

Subtask #1:

score: 34
Accepted

Test #1:

score: 34
Accepted
time: 24ms
memory: 53716kb

input:

2 1
1 2 1 10

output:

0

result:

ok single line: '0'

Test #2:

score: 0
Accepted
time: 20ms
memory: 53728kb

input:

8 1
5 6 1 7

output:

-1

result:

ok single line: '-1'

Test #3:

score: 0
Accepted
time: 16ms
memory: 53684kb

input:

8 19
4 8 15 5
7 8 15 6
1 4 15 6
3 4 2 10
2 7 15 10
5 6 2 10
1 7 2 3
4 5 15 7
1 6 15 6
2 5 2 6
1 8 15 2
1 2 15 9
5 7 2 5
3 8 2 5
4 7 2 6
6 7 15 8
3 7 15 6
2 8 2 1
5 8 15 6

output:

2

result:

ok single line: '2'

Test #4:

score: 0
Accepted
time: 20ms
memory: 53620kb

input:

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

output:

0

result:

ok single line: '0'

Test #5:

score: 0
Accepted
time: 16ms
memory: 53632kb

input:

64 106
7 46 100 641441921
4 22 92 909042053
27 46 100 185644091
52 54 100 333473988
21 41 69 747879553
23 45 24 121784836
16 23 69 538978180
15 42 92 403583091
49 60 69 112127397
44 48 21 733685727
18 40 92 287239281
3 30 48 498139743
21 25 24 281665265
13 24 69 315527284
12 35 21 100990101
33 56 10...

output:

-1

result:

ok single line: '-1'

Test #6:

score: 0
Accepted
time: 12ms
memory: 53536kb

input:

10 45
6 7 29 19322896
6 8 29 826842878
5 9 29 229755065
1 6 29 49301462
4 10 29 356862039
3 7 29 377906409
8 10 29 877820670
4 8 29 150486169
1 10 29 291057766
1 5 29 982043864
1 3 29 126557279
5 6 29 721959799
3 10 29 636909401
1 7 29 772752473
5 8 29 523364181
7 9 29 250673970
2 6 29 417264209
2 4...

output:

255671682

result:

ok single line: '255671682'

Test #7:

score: 0
Accepted
time: 20ms
memory: 53896kb

input:

71 788
5 24 146 614916874
56 61 567 467226384
16 44 275 490241032
14 25 567 779488700
19 42 262 524833651
6 19 567 912315689
8 21 774 326632848
46 62 675 296672130
27 32 715 104878301
13 47 675 546642528
18 68 675 349712771
8 43 146 305351688
13 58 567 776051722
49 63 601 454628166
30 43 715 7695855...

output:

46083838

result:

ok single line: '46083838'

Test #8:

score: 0
Accepted
time: 18ms
memory: 53820kb

input:

55 443
11 21 307 732223755
32 42 307 182136903
47 48 346 925071240
45 53 307 225221704
1 45 307 807617287
28 46 307 644657251
2 42 346 807672874
39 42 346 173126332
11 50 346 105073586
48 53 346 363756204
19 27 346 749462761
8 20 346 838034581
28 31 307 183749842
28 53 346 909041858
33 50 346 364806...

output:

342534314

result:

ok single line: '342534314'

Test #9:

score: 0
Accepted
time: 74ms
memory: 54232kb

input:

999 1988
153 528 1690 1
1 867 1158 1
481 785 1741 1
226 528 203 1
356 481 1957 1
278 481 716 1
168 528 612 1
1 140 489 1
528 533 446 1
4 528 1715 1
481 698 1350 1
35 528 1658 1
528 601 1345 1
24 481 559 1
524 528 88 1
1 606 1547 1
481 493 1017 1
165 528 1685 1
481 849 1847 1
528 711 1464 1
1 663 222...

output:

3

result:

ok single line: '3'

Test #10:

score: 0
Accepted
time: 48ms
memory: 54352kb

input:

999 1988
328 983 1573 1
130 468 1140 1
44 983 210 1
15 983 1848 1
517 983 1451 1
1 131 563 1
1 209 182 1
130 793 1295 1
130 947 1295 1
130 680 1295 1
130 214 1295 1
584 983 567 1
726 983 1019 1
130 456 1295 1
198 575 1295 1
1 6 283 1
200 575 1295 1
205 575 1295 1
1 399 1128 1
130 589 1510 1
923 983 ...

output:

3

result:

ok single line: '3'

Test #11:

score: 0
Accepted
time: 78ms
memory: 54172kb

input:

1000 1990
528 730 1843 1
523 730 1843 1
124 894 1843 1
224 730 1843 1
124 617 1843 1
679 730 1843 1
124 913 1843 1
488 730 1843 1
493 730 1843 1
730 748 1843 1
730 959 1843 1
124 437 1843 1
124 187 1843 1
124 332 1843 1
124 279 1843 1
124 961 1843 1
124 744 1843 1
203 730 1843 1
723 730 1843 1
730 9...

output:

3

result:

ok single line: '3'

Test #12:

score: 0
Accepted
time: 30ms
memory: 54292kb

input:

998 1658
296 805 151 1
141 805 151 1
218 983 151 2
1 608 151 2
1 49 151 2
740 805 151 1
225 805 151 1
218 420 151 2
87 266 151 1
218 527 151 2
1 374 151 2
218 905 151 2
699 744 151 1
660 805 151 1
836 889 151 1
62 805 151 1
184 218 151 2
95 457 151 1
218 985 151 2
218 621 151 2
1 577 151 2
587 981 1...

output:

666

result:

ok single line: '666'

Test #13:

score: 0
Accepted
time: 67ms
memory: 54112kb

input:

1000 1983
752 787 507 1
752 832 507 1
752 927 507 1
556 581 507 1
581 891 507 1
451 581 507 1
107 581 507 1
752 765 507 1
81 752 507 2
251 581 507 1
581 859 507 1
321 581 507 1
55 581 507 1
752 814 507 1
581 780 507 1
581 790 507 1
387 581 507 1
356 752 507 1
581 932 507 1
1 889 507 2
581 893 507 1
...

output:

989

result:

ok single line: '989'

Test #14:

score: 0
Accepted
time: 62ms
memory: 54232kb

input:

1000 1983
415 567 756 1
62 709 756 1
89 709 756 1
417 709 756 1
457 709 756 1
149 415 756 1
709 964 756 1
275 709 756 1
709 928 756 1
299 709 756 1
487 709 756 1
709 791 756 1
415 967 756 1
415 941 756 1
217 709 756 1
709 984 756 1
415 604 756 1
212 415 756 1
399 415 756 1
438 709 756 1
294 709 756 ...

output:

26

result:

ok single line: '26'

Test #15:

score: 0
Accepted
time: 15ms
memory: 54012kb

input:

1000 999
656 793 229 300116971
200 526 229 848062849
57 209 229 748009426
608 970 229 962221417
161 721 229 384089949
260 595 229 428874737
156 233 229 577150696
158 385 229 738154446
136 709 229 67894231
25 903 229 397142287
732 767 229 957266971
550 781 229 823510106
384 752 229 406598247
5 271 22...

output:

201664848082

result:

ok single line: '201664848082'

Test #16:

score: 0
Accepted
time: 21ms
memory: 54192kb

input:

1000 1998
216 873 802 148650296
85 606 802 89598343
113 720 802 287659390
468 531 802 204322693
331 564 802 373686511
583 642 802 115887999
602 719 802 233321776
642 944 802 57082002
916 950 802 92555430
143 352 802 461653014
434 687 802 72505880
238 659 802 31377094
187 375 802 140765767
250 272 80...

output:

18092395296

result:

ok single line: '18092395296'

Test #17:

score: 0
Accepted
time: 20ms
memory: 54176kb

input:

800 1478
477 620 933 5658029
288 630 933 374079479
93 181 1082 151764046
469 690 1082 161114493
100 381 933 708106586
266 327 1082 738393737
17 495 933 368385363
312 496 933 399240908
165 548 1082 436276578
389 677 933 31330966
310 493 933 121847365
361 459 933 576299908
396 796 933 981781202
60 303...

output:

-1

result:

ok single line: '-1'

Test #18:

score: 0
Accepted
time: 15ms
memory: 53836kb

input:

915 572
332 504 416 228776811
435 728 445 412258532
93 182 506 914985113
10 162 416 307159431
339 583 416 622601819
738 814 445 464379203
787 795 560 265814135
806 820 445 529333835
774 798 506 119778570
435 583 506 6220730
374 789 560 753701380
441 693 560 808760860
81 102 506 803896086
383 507 506...

output:

-1

result:

ok single line: '-1'

Test #19:

score: 0
Accepted
time: 22ms
memory: 54204kb

input:

100 2000
35 48 1983 65612927
31 53 60 76830022
30 56 1764 65879682
32 35 60 20526498
38 83 60 28781478
31 99 60 2620538
32 51 1983 32927409
5 73 1764 2812104
7 41 1983 10191012
13 90 60 71582220
10 50 1262 38366351
45 80 1262 15238959
23 82 1983 12778753
39 48 1675 27393975
82 87 1764 48078651
28 96...

output:

153828372

result:

ok single line: '153828372'

Test #20:

score: 0
Accepted
time: 13ms
memory: 54132kb

input:

1000 1332
60 826 1091 1000000000
603 878 1091 1000000000
511 904 1091 999999999
111 952 1091 999999999
10 634 1091 1000000000
582 840 1091 999999999
87 486 1091 999999999
156 748 1091 999999999
45 232 1091 1000000000
625 940 1091 999999999
84 380 1091 1000000000
49 490 1091 999999999
184 909 1091 10...

output:

665999999497

result:

ok single line: '665999999497'

Subtask #2:

score: 0
Time Limit Exceeded

Test #21:

score: 24
Accepted
time: 397ms
memory: 76804kb

input:

25437 78923
921 9998 30945 1
5452 13736 24464 1
11746 24238 24464 1
10875 12958 24464 1
12267 20617 30945 1
3738 16549 35589 1
16223 16940 35589 1
1303 23059 24464 1
12424 21853 24464 1
11198 20674 35589 1
15645 19099 30945 1
8860 9441 24464 1
3609 15160 35589 1
22638 23472 24464 1
766 8991 35589 1
...

output:

5

result:

ok single line: '5'

Test #22:

score: 0
Accepted
time: 119ms
memory: 65428kb

input:

15761 34565
6553 7857 4268 1
1139 8149 4268 1
4136 9004 4268 1
3810 8194 27009 1
3005 10547 9061 1
3025 15018 27009 1
5735 6627 9061 1
2337 12263 9061 1
4260 8046 9061 1
12549 14043 4268 1
6992 11456 4268 1
833 4225 4268 1
1609 9603 4268 1
2588 9564 9061 1
2361 8162 27009 1
10250 10706 4268 1
6878 1...

output:

6

result:

ok single line: '6'

Test #23:

score: 0
Accepted
time: 1162ms
memory: 84244kb

input:

16917 133722
10190 12792 75746 1
4125 15443 75746 1
163 5884 29061 1
2756 10488 29061 1
7080 9199 75746 1
1463 4211 75746 1
5115 7366 29061 1
10308 11662 75746 1
1196 14025 29061 1
2863 14178 75746 1
9795 13347 75746 1
13003 13888 75746 1
5035 16673 75746 1
1356 15130 75746 1
13068 16408 29061 1
349...

output:

3

result:

ok single line: '3'

Test #24:

score: 0
Accepted
time: 218ms
memory: 69540kb

input:

25063 52020
145 18915 3816 1
5378 20731 3816 1
17344 23239 21514 1
2212 6628 3816 1
3462 15824 3816 1
1660 15356 21514 1
7250 18036 21514 1
8600 17595 21514 1
1446 12372 3816 1
10292 22860 3816 1
6562 18473 21514 1
10903 20797 21514 1
5932 8895 21514 1
5310 8230 3816 1
15875 24245 21514 1
3521 3908 ...

output:

5

result:

ok single line: '5'

Test #25:

score: -24
Time Limit Exceeded

input:

99999 199988
4731 83366 89897 1
80907 83366 155057 1
1 15876 82022 1
83366 86520 193680 1
15678 83366 180045 1
31911 59651 263 1
1 61854 122596 1
83366 99983 63626 1
67027 83366 28130 1
19313 83366 74260 1
59651 87942 97680 1
1 98039 115849 1
53600 83366 150525 1
26771 83366 120178 1
80859 83366 537...

output:


result:


Subtask #3:

score: 0
Skipped

Dependency #1:

100%
Accepted

Dependency #2:

0%