QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#875750 | #10023. Kangaroo On Graph | asdfsdf# | AC ✓ | 565ms | 100976kb | C++23 | 2.5kb | 2025-01-30 12:08:29 | 2025-01-30 12:08:29 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
#define MOD 998244353
#define MAX 6020202
map<pii, int> mp;
pii edges[MAX];
int W[MAX];
vector<int> nxt[MAX];
vector<int> gph[MAX];
vector<pii> adj[MAX];
int eloc[MAX];
int cnt;
int ch[MAX][2];
int init(int v, int s, int e, int loc) {
if (s == e) {
adj[loc].emplace_back(gph[v][s], W[gph[v][s]]);
return loc;
}
int m = s + e >> 1;
adj[loc].emplace_back(ch[loc][0] = init(v, s, m, ++cnt), 0);
adj[loc].emplace_back(ch[loc][1] = init(v, m + 1, e, ++cnt), 0);
return loc;
}
void add(int v, int edge, int s, int e, int l, int r, int loc) {
if (e < l || r < s) return;
if (l <= s && e <= r) {
adj[edge].emplace_back(loc, 0);
return;
}
int m = s + e >> 1;
add(v, edge, s, m, l, r, ch[loc][0]);
add(v, edge, m + 1, e, l, r, ch[loc][1]);
}
ll dist[MAX];
int vis[MAX];
signed main() {
ios::sync_with_stdio(false), cin.tie(0);
int N, M;
cin >> N >> M;
int i, a, b, c;
for (i = 1; i <= M; i++) {
cin >> a >> b;
eloc[i] = gph[a].size();
gph[a].push_back(i);
edges[i] = pii(a, b);
cin >> W[i];
mp[pii(a, b)] = i;
}
cnt = N + M;
for (i = 1; i <= N; i++) {
if (gph[i].empty()) continue;
int d = gph[i].size();
init(i, 0, d - 1, i + M);
}
int K;
cin >> K;
for (i = 1; i <= K; i++) {
cin >> a >> b >> c;
int e1, e2;
e1 = mp[pii(a, b)];
e2 = mp[pii(b, c)];
nxt[e1].push_back(eloc[e2]);
}
for (i = 1; i <= M; i++) {
int nv = edges[i].second;
if (nxt[i].empty()) adj[i].emplace_back(nv + M, 0);
else {
sort(nxt[i].begin(), nxt[i].end());
int p = -1;
for (auto l : nxt[i]) {
if (p + 1 < l) add(nv, i, 0, (int)gph[nv].size() - 1, p + 1, l - 1, nv + M);
p = l;
}
if (p + 1 < gph[nv].size()) add(nv, i, 0, (int)gph[nv].size() - 1, p + 1, (int)gph[nv].size() - 1, nv + M);
}
}
for (i = 1; i <= cnt; i++) dist[i] = 1e18;
typedef pair<ll, int> pli;
priority_queue<pli, vector<pli>, greater<pli>> pq;
for (i = 1; i <= M; i++) {
if (edges[i].first == 1) {
dist[i] = W[i];
pq.emplace(W[i], i);
}
}
while (pq.size()) {
auto t = pq.top().second;
pq.pop();
if (vis[t]) continue;
vis[t] = 1;
for (auto& [v, w] : adj[t]) {
if (dist[v] > dist[t] + w) {
dist[v] = dist[t] + w;
pq.emplace(dist[v], v);
}
}
}
ll ans = 1e18;
for (i = 1; i <= M; i++) if (edges[i].second == N) ans = min(ans, dist[i]);
if (ans <= 1e17) cout << ans;
else cout << -1;
}
詳細信息
Test #1:
score: 100
Accepted
time: 17ms
memory: 14020kb
input:
4 4 1 3 2 1 2 3 2 4 3 3 4 3 1 1 3 4
output:
6
result:
ok answer is '6'
Test #2:
score: 0
Accepted
time: 16ms
memory: 13836kb
input:
7 8 1 3 5 1 2 2 3 4 1 2 4 1 4 5 6 4 6 2 5 7 1 6 7 1 2 3 4 5 2 4 6
output:
9
result:
ok answer is '9'
Test #3:
score: 0
Accepted
time: 17ms
memory: 12024kb
input:
4 3 1 2 3 2 3 4 3 4 1 1 1 2 3
output:
-1
result:
ok answer is '-1'
Test #4:
score: 0
Accepted
time: 371ms
memory: 75000kb
input:
150001 200000 27259 27261 590380540 62249 62251 781612972 142049 142051 869916317 21557 21559 882107330 43939 43940 906862353 13835 13837 750774554 85358 85360 468362257 42743 42745 653927711 25898 25900 427788655 9457 9459 600827054 80848 80850 853444790 84751 84753 490887034 142664 142666 26367087...
output:
49897302829745
result:
ok answer is '49897302829745'
Test #5:
score: 0
Accepted
time: 226ms
memory: 54508kb
input:
100000 133332 94634 94636 273916875 49405 49406 7705623 46579 46580 613041575 97379 97381 277397584 86487 86488 446200817 7618 7619 82676219 79763 79765 265220769 49775 49777 175656241 50253 50254 509685344 64341 64342 642442592 81789 81790 7720070 59791 59792 190513484 92339 92341 839361674 83696 8...
output:
33346820813893
result:
ok answer is '33346820813893'
Test #6:
score: 0
Accepted
time: 368ms
memory: 75000kb
input:
149998 199996 84723 84724 160637000 143893 143894 382237567 128673 128674 229111160 87169 87171 186600504 103309 103311 415954689 65442 65443 895315674 71846 71848 882228834 69164 69166 953310617 30360 30361 433585279 126633 126634 77552169 102808 102809 858368884 123704 123706 492180159 142672 1426...
output:
49784186835101
result:
ok answer is '49784186835101'
Test #7:
score: 0
Accepted
time: 99ms
memory: 20516kb
input:
10023 20040 1 1646 1646 1 4408 4408 1 4109 4109 4019 10002 4019 1 2876 2876 1 8613 8613 1 2766 2766 1537 10002 1537 1 3584 3584 1 696 696 1 5648 5648 8667 10002 8667 1 9008 9008 6467 10002 6467 1 1231 1231 1 4290 4290 7054 10002 7054 7021 10002 7021 10007 10023 10007 1 4912 4912 1 5670 5670 2352 100...
output:
40008
result:
ok answer is '40008'
Test #8:
score: 0
Accepted
time: 56ms
memory: 21124kb
input:
10023 20040 1339 10023 1339 12 286 286 1407 10023 1407 6795 10023 6795 6033 10023 6033 5577 10023 5577 6788 10023 6788 4065 10023 4065 3640 10023 3640 12 4354 4354 12 6039 6039 84 10023 84 12 1057 1057 7500 10023 7500 2620 10023 2620 4670 10023 4670 12 2987 2987 1628 10023 1628 1954 10023 1954 12 79...
output:
20048
result:
ok answer is '20048'
Test #9:
score: 0
Accepted
time: 74ms
memory: 15524kb
input:
2003 4000 1002 1300 1000000000 1 881 881 1050 2003 1000000000 310 1002 310 52 1002 52 223 1002 223 1002 1151 1000000000 1002 1619 1000000000 1109 2003 1000000000 1 815 815 1 565 565 80 1002 80 1654 2003 1000000000 1556 2003 1000000000 1 887 887 1 10 10 1349 2003 1000000000 1002 1478 1000000000 1071 ...
output:
2000000404
result:
ok answer is '2000000404'
Test #10:
score: 0
Accepted
time: 565ms
memory: 98816kb
input:
100001 199980 13628 20001 947212974 50001 56304 751361163 79801 80001 89669673 13146 20001 452181224 70001 76260 180984182 61744 70001 506205944 86270 90001 658175650 70001 73957 985790752 44630 50001 980133138 40001 45798 471804838 1 5816 117814016 49260 50001 539123895 88564 90001 885508707 99971 ...
output:
108632311
result:
ok answer is '108632311'
Test #11:
score: 0
Accepted
time: 554ms
memory: 100976kb
input:
100001 199980 54252 60001 931849357 2308 10001 78090353 50001 58586 245223037 20001 20280 156610358 92845 100001 296356002 80001 88077 358953339 66323 70001 738684727 20001 25613 82068155 10001 12254 147861325 50001 56652 949175371 99828 100001 488638169 70001 78139 202967618 5385 10001 362412460 72...
output:
125777572
result:
ok answer is '125777572'
Test #12:
score: 0
Accepted
time: 394ms
memory: 88484kb
input:
90001 179994 7887 30001 421639474 66004 90001 10233163 30001 46134 765869589 30001 40760 413675979 30001 53470 828769642 60001 84224 414141641 60001 62744 575784125 1 28822 978322175 24031 30001 588283135 60001 64067 702530095 60001 61230 306565055 29049 30001 474591288 60001 70395 531904458 50047 6...
output:
27558763
result:
ok answer is '27558763'
Test #13:
score: 0
Accepted
time: 176ms
memory: 89700kb
input:
146390 199992 1 519 969257113 1 540 485291313 1 565 879692866 1 665 411893045 1 1096 62247035 1 2101 228419818 1 2218 44685509 1 2458 351787052 1 2689 3864678 1 2793 783000299 1 2854 850215154 1 3188 86090097 1 3502 556366245 1 3968 535656281 1 4555 579324859 1 4679 85194374 1 5579 167727590 1 5841 ...
output:
175321731
result:
ok answer is '175321731'
Test #14:
score: 0
Accepted
time: 173ms
memory: 95624kb
input:
179212 199907 1 274 540983730 1 1731 499296920 1 2478 609417385 1 2574 979237456 1 4296 599435756 1 4570 311092290 1 4721 507400255 1 4895 275152948 1 5615 277331821 1 5703 583935806 1 5925 83056115 1 6302 672932 1 6391 13251295 1 6472 364513918 1 6751 238436572 1 7102 586342973 1 7855 291103278 1 8...
output:
331966516
result:
ok answer is '331966516'
Test #15:
score: 0
Accepted
time: 174ms
memory: 91520kb
input:
105443 199997 1 654 378859616 1 804 978808207 1 1163 211995422 1 1857 408405618 1 3240 35746364 1 3341 561766152 1 3412 214704933 1 3531 967740481 1 3651 804196493 1 3673 441493099 1 4269 240983949 1 4279 345372367 1 4336 888893882 1 4506 254258197 1 4552 170136458 1 4644 431794603 1 5363 798633567 ...
output:
551278205
result:
ok answer is '551278205'
Test #16:
score: 0
Accepted
time: 168ms
memory: 81568kb
input:
124760 199900 1 323 837429950 1 610 296707117 1 880 340324842 1 2773 160463640 1 3011 512471708 1 3186 628772897 1 3686 21936922 1 3766 191852555 1 5782 304919946 1 6372 113987218 1 6921 118974582 1 7373 660306168 1 7518 784540825 1 7805 805046130 1 7868 471107812 1 7949 393202319 1 8004 635270091 1...
output:
-1
result:
ok answer is '-1'
Test #17:
score: 0
Accepted
time: 172ms
memory: 83348kb
input:
105114 199946 1 131 929388780 1 368 701893952 1 415 495315074 1 639 408904688 1 718 875318501 1 753 786872885 1 1194 266178665 1 1311 382252026 1 1497 289950635 1 1527 451663510 1 1724 485963863 1 2225 614478012 1 2290 626124045 1 2388 320028154 1 2426 949359943 1 2547 491383296 1 2592 158038945 1 2...
output:
70338809
result:
ok answer is '70338809'
Test #18:
score: 0
Accepted
time: 17ms
memory: 7784kb
input:
200000 0 0
output:
-1
result:
ok answer is '-1'
Test #19:
score: 0
Accepted
time: 16ms
memory: 11892kb
input:
3 2 1 2 1 2 3 1 1 1 2 3
output:
-1
result:
ok answer is '-1'