QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#572809#2178. Robotisirazeev0 157ms32020kbC++201.9kb2024-09-18 16:28:402024-09-18 16:28:40

Judging History

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

  • [2024-09-18 16:28:40]
  • 评测
  • 测评结果:0
  • 用时:157ms
  • 内存:32020kb
  • [2024-09-18 16:28:40]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    int n, m;
    cin >> n >> m;
    int c[m], p[m], dp[n], last[n], a[m], b[m];
    vector<int> g[n];
    for (int i = 0; i < m; i++) {
        int u, v;
        cin >> u >> v >> c[i] >> p[i];
        u--, v--;
        a[i] = u, b[i] = v;
        g[u].emplace_back(i);
        g[v].emplace_back(i);
    }
    for (int i = 0; i < n; i++) dp[i] = last[i] = (int) 1e18;
    dp[0] = 0;
    set<pair<int, int>> st;
    map<int, int> cnt[n];
    for (int i = 0; i < n; i++) {
        for (auto u: g[i])
            cnt[i][c[u]]++;
    }
    st.insert({dp[0], 0});
    while (!st.empty()) {
        int v = st.begin()->second;
        st.erase(st.begin());
        for (auto i: g[v]) {
            if (c[i] != last[v]) {
                if (cnt[v][c[i]] == 1 && dp[a[i] + b[i] - v] > dp[v]) {
                    st.erase({dp[a[i] + b[i] - v], a[i] + b[i] - v});
                    dp[a[i] + b[i] - v] = dp[v];
                    last[a[i] + b[i] - v] = c[i];
                    st.insert({dp[a[i] + b[i] - v], a[i] + b[i] - v});
                } else if (dp[a[i] + b[i] - v] > dp[v] + p[i]) {
                    st.erase({dp[a[i] + b[i] - v], a[i] + b[i] - v});
                    dp[a[i] + b[i] - v] = dp[v] + p[i];
                    last[a[i] + b[i] - v] = (int) 1e18;
                    st.insert({dp[a[i] + b[i] - v], a[i] + b[i] - v});
                }
            } else if (dp[a[i] + b[i] - v] > dp[v] + p[i]) {
                st.erase({dp[a[i] + b[i] - v], a[i] + b[i] - v});
                dp[a[i] + b[i] - v] = dp[v] + p[i];
                last[a[i] + b[i] - v] = (int) 1e18;
                st.insert({dp[a[i] + b[i] - v], a[i] + b[i] - v});
            }
        }
    }
    cout << (dp[n - 1] == (int) 1e18 ? -1 : dp[n - 1]);
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

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

input:

2 1
1 2 1 10

output:

0

result:

ok single line: '0'

Test #2:

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

input:

8 1
5 6 1 7

output:

-1

result:

ok single line: '-1'

Test #3:

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

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: 34
Accepted
time: 0ms
memory: 3560kb

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: 34
Accepted
time: 0ms
memory: 3644kb

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: 34
Accepted
time: 0ms
memory: 3604kb

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
Wrong Answer
time: 1ms
memory: 3688kb

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:

180375577

result:

wrong answer 1st lines differ - expected: '46083838', found: '180375577'

Subtask #2:

score: 0
Wrong Answer

Test #21:

score: 24
Accepted
time: 37ms
memory: 12048kb

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: 24
Accepted
time: 17ms
memory: 8000kb

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: 24
Accepted
time: 37ms
memory: 11008kb

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: 24
Accepted
time: 22ms
memory: 9920kb

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: 0
Wrong Answer
time: 157ms
memory: 32020kb

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:

5

result:

wrong answer 1st lines differ - expected: '3', found: '5'

Subtask #3:

score: 0
Skipped

Dependency #1:

0%