# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
524115 | 2022-02-08T16:29:23 Z | qwerasdfzxcl | Firefighting (NOI20_firefighting) | C++14 | 1611 ms | 196860 KB |
#include <bits/stdc++.h> typedef long long ll; using namespace std; vector<pair<int, ll>> adj[300300]; pair<int, ll> sp[300300][20]; ll dep[300300]; priority_queue<pair<ll, int>> pq; struct Cent{ ll dist[300300][20], mn[300300]; int cpa[300300], sz[300300], cdep[300300]; bool visited[300300]; int getsz(int s, int pa = -1){ sz[s] = 1; for (auto &[v, w]:adj[s]) if (!visited[v] && v!=pa) sz[s] += getsz(v, s); return sz[s]; } int getcent(int s, int cap, int pa = -1){ for (auto &[v, w]:adj[s]) if (!visited[v] && v!=pa && sz[v]*2>cap) return getcent(v, cap, s); return s; } void getdist(int s, int dep, int pa = 0){ for (auto &[v, w]:adj[s]) if (!visited[v] && v!=pa){ dist[v][dep] = dist[s][dep] + w; getdist(v, dep, s); } } int init(int s, int dep = 0){ getsz(s); int cent = getcent(s, sz[s]); cdep[cent] = dep; getdist(cent, dep); visited[cent] = 1; mn[cent] = 1e18; for (auto &[v, w]:adj[cent]) if (!visited[v]){ int nxt = init(v, dep+1); cpa[nxt] = cent; } return cent; } void update(int s){ for (int cur=s;cur;cur=cpa[cur]){ mn[cur] = min(mn[cur], dist[s][cdep[cur]]); } } ll query(int s){ ll ret = 1e18; for (int cur=s;cur;cur=cpa[cur]){ ret = min(ret, dist[s][cdep[cur]] + mn[cur]); } return ret; } }cent; void dfs(int s, int pa = -1){ for (auto &v:adj[s]) if (v.first!=pa){ sp[v.first][0] = {s, v.second}; dep[v.first] = dep[s] + v.second; dfs(v.first, s); } } void sp_init(int n){ for (int j=1;j<20;j++){ for (int i=1;i<=n;i++){ sp[i][j].first = sp[sp[i][j-1].first][j-1].first; sp[i][j].second = sp[i][j-1].second + sp[sp[i][j-1].first][j-1].second; } } } int main(){ int n; ll D; scanf("%d %lld", &n, &D); for (int i=0;i<n-1;i++){ int x, y; ll z; scanf("%d %d %lld", &x, &y, &z); adj[x].emplace_back(y, z); adj[y].emplace_back(x, z); } if (n==1) {printf("1\n1\n"); return 0;} dfs(1); for (int i=1;i<=n;i++) pq.emplace(dep[i], i); cent.init(1); sp_init(n); vector<int> ans; while(!pq.empty()){ auto cur = pq.top(); pq.pop(); if (cent.query(cur.second) <= D) continue; int s = cur.second; ll rem = D; for (int j=19;j>=0;j--) if (sp[s][j].first && sp[s][j].second<=rem){ rem -= sp[s][j].second; s = sp[s][j].first; } ans.push_back(s); cent.update(s); } printf("%d\n", (int)ans.size()); for (auto &x:ans) printf("%d ", x); return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1147 ms | 182624 KB | Output is correct |
2 | Correct | 1204 ms | 182616 KB | Output is correct |
3 | Correct | 334 ms | 72080 KB | Output is correct |
4 | Correct | 1154 ms | 177960 KB | Output is correct |
5 | Correct | 4 ms | 7372 KB | Output is correct |
6 | Correct | 4 ms | 7244 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 7388 KB | Output is correct |
2 | Correct | 4 ms | 7372 KB | Output is correct |
3 | Correct | 4 ms | 7368 KB | Output is correct |
4 | Correct | 4 ms | 7368 KB | Output is correct |
5 | Correct | 4 ms | 7372 KB | Output is correct |
6 | Correct | 4 ms | 7372 KB | Output is correct |
7 | Correct | 4 ms | 7372 KB | Output is correct |
8 | Correct | 4 ms | 7372 KB | Output is correct |
9 | Correct | 4 ms | 7364 KB | Output is correct |
10 | Correct | 4 ms | 7372 KB | Output is correct |
11 | Correct | 4 ms | 7364 KB | Output is correct |
12 | Correct | 4 ms | 7372 KB | Output is correct |
13 | Correct | 5 ms | 7372 KB | Output is correct |
14 | Correct | 4 ms | 7372 KB | Output is correct |
15 | Correct | 4 ms | 7288 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 7372 KB | Output is correct |
2 | Correct | 4 ms | 7372 KB | Output is correct |
3 | Correct | 4 ms | 7364 KB | Output is correct |
4 | Correct | 4 ms | 7364 KB | Output is correct |
5 | Correct | 4 ms | 7372 KB | Output is correct |
6 | Correct | 4 ms | 7352 KB | Output is correct |
7 | Correct | 4 ms | 7364 KB | Output is correct |
8 | Correct | 4 ms | 7244 KB | Output is correct |
9 | Correct | 4 ms | 7372 KB | Output is correct |
10 | Correct | 4 ms | 7372 KB | Output is correct |
11 | Correct | 4 ms | 7364 KB | Output is correct |
12 | Correct | 5 ms | 7416 KB | Output is correct |
13 | Correct | 4 ms | 7372 KB | Output is correct |
14 | Correct | 4 ms | 7372 KB | Output is correct |
15 | Correct | 4 ms | 7372 KB | Output is correct |
16 | Correct | 4 ms | 7372 KB | Output is correct |
17 | Correct | 4 ms | 7372 KB | Output is correct |
18 | Correct | 4 ms | 7372 KB | Output is correct |
19 | Correct | 4 ms | 7372 KB | Output is correct |
20 | Correct | 4 ms | 7368 KB | Output is correct |
21 | Correct | 4 ms | 7372 KB | Output is correct |
22 | Correct | 4 ms | 7372 KB | Output is correct |
23 | Correct | 4 ms | 7360 KB | Output is correct |
24 | Correct | 4 ms | 7400 KB | Output is correct |
25 | Correct | 4 ms | 7372 KB | Output is correct |
26 | Correct | 4 ms | 7372 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1189 ms | 182692 KB | Output is correct |
2 | Correct | 573 ms | 106324 KB | Output is correct |
3 | Correct | 586 ms | 111768 KB | Output is correct |
4 | Correct | 511 ms | 97616 KB | Output is correct |
5 | Correct | 4 ms | 7372 KB | Output is correct |
6 | Correct | 4 ms | 7244 KB | Output is correct |
7 | Correct | 554 ms | 183532 KB | Output is correct |
8 | Correct | 569 ms | 183392 KB | Output is correct |
9 | Correct | 560 ms | 183540 KB | Output is correct |
10 | Correct | 557 ms | 183448 KB | Output is correct |
11 | Correct | 1181 ms | 189420 KB | Output is correct |
12 | Correct | 698 ms | 128360 KB | Output is correct |
13 | Correct | 375 ms | 83472 KB | Output is correct |
14 | Correct | 668 ms | 123044 KB | Output is correct |
15 | Correct | 891 ms | 147928 KB | Output is correct |
16 | Correct | 953 ms | 158648 KB | Output is correct |
17 | Correct | 813 ms | 135360 KB | Output is correct |
18 | Correct | 722 ms | 133012 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 7 ms | 8708 KB | Output is correct |
2 | Correct | 7 ms | 8904 KB | Output is correct |
3 | Correct | 6 ms | 8128 KB | Output is correct |
4 | Correct | 6 ms | 8524 KB | Output is correct |
5 | Correct | 10 ms | 9292 KB | Output is correct |
6 | Correct | 8 ms | 9292 KB | Output is correct |
7 | Correct | 9 ms | 9208 KB | Output is correct |
8 | Correct | 8 ms | 9292 KB | Output is correct |
9 | Correct | 11 ms | 9164 KB | Output is correct |
10 | Correct | 8 ms | 9164 KB | Output is correct |
11 | Correct | 8 ms | 9284 KB | Output is correct |
12 | Correct | 6 ms | 8188 KB | Output is correct |
13 | Correct | 8 ms | 9300 KB | Output is correct |
14 | Correct | 8 ms | 9168 KB | Output is correct |
15 | Correct | 8 ms | 9164 KB | Output is correct |
16 | Correct | 6 ms | 8396 KB | Output is correct |
17 | Correct | 5 ms | 8140 KB | Output is correct |
18 | Correct | 7 ms | 9292 KB | Output is correct |
19 | Correct | 7 ms | 8652 KB | Output is correct |
20 | Correct | 7 ms | 8268 KB | Output is correct |
21 | Correct | 9 ms | 9144 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1148 ms | 171364 KB | Output is correct |
2 | Correct | 1165 ms | 170228 KB | Output is correct |
3 | Correct | 1285 ms | 183272 KB | Output is correct |
4 | Correct | 512 ms | 89124 KB | Output is correct |
5 | Correct | 1604 ms | 193168 KB | Output is correct |
6 | Correct | 1554 ms | 192180 KB | Output is correct |
7 | Correct | 1611 ms | 194480 KB | Output is correct |
8 | Correct | 1541 ms | 193728 KB | Output is correct |
9 | Correct | 1548 ms | 189452 KB | Output is correct |
10 | Correct | 1550 ms | 188816 KB | Output is correct |
11 | Correct | 1484 ms | 196860 KB | Output is correct |
12 | Correct | 746 ms | 125276 KB | Output is correct |
13 | Correct | 1362 ms | 191564 KB | Output is correct |
14 | Correct | 1495 ms | 188572 KB | Output is correct |
15 | Correct | 1145 ms | 184552 KB | Output is correct |
16 | Correct | 1043 ms | 173944 KB | Output is correct |
17 | Correct | 1038 ms | 171668 KB | Output is correct |
18 | Correct | 1173 ms | 184356 KB | Output is correct |
19 | Correct | 704 ms | 130912 KB | Output is correct |
20 | Correct | 342 ms | 78080 KB | Output is correct |
21 | Correct | 1116 ms | 184288 KB | Output is correct |