Submission #682621

# Submission time Handle Problem Language Result Execution time Memory
682621 2023-01-16T15:34:41 Z BhavayGoyal Firefighting (NOI20_firefighting) C++14
100 / 100
331 ms 41292 KB
#include <bits/stdc++.h>
using namespace std;

#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;

template<class T> using oset = 
            tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

#define int long long
#define ld long double
#define ar array
#define vi vector<int>
#define vii vector<vector<int>>
#define pii pair<int, int>
#define pb push_back
#define all(x) x.begin(), x.end()
#define f first
#define s second
#define endl "\n"

const int MOD = 1e9+7;
const int inf = 1e9;
const int linf = 1e18;

const int d4i[4]={-1, 0, 1, 0}, d4j[4]={0, 1, 0, -1};
const int d8i[8]={-1, -1, 0, 1, 1, 1, 0, -1}, d8j[8]={0, 1, 1, 1, 0, -1, -1, -1};


// -------------------------------------------------- Main Code --------------------------------------------------

const int N = 3e5+5;
int n, k, isUsed[N];
vi ans;
vector<pii> g[N];

int dfs(int src, int par, int lastWt) {
    int req = 0, ext = linf;
    for (auto child : g[src]) {
        int ch = child.f, wt = child.s;
        if (ch == par) continue;
        int x = dfs(ch, src, wt);
        if (!isUsed[ch]) req = max(req, x);
        else ext = min(ext, x);
    }

    if (ext+req <= k) {
        isUsed[src] = true;
        return lastWt+ext;
    }

    if (lastWt+req <= k) {
        return lastWt+req;
    }

    ans.pb(src);
    isUsed[src] = true;
    return lastWt;

    // have to add fire station on this node
}

void sol() {
    cin >> n >> k;
    for (int i = 0; i < n-1; i++) {
        int a, b, c; cin >> a >> b >> c;
        --a; --b;
        g[a].pb({b, c});
        g[b].pb({a, c});
    }

    dfs(0, -1, linf);
    cout << ans.size() << endl;
    reverse(all(ans));
    for (auto i : ans) cout << i+1 << " "; cout << endl;
}

signed main () {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int t = 1;
    // cin >> t; 
    while (t--) {
        sol();
    }
    return 0;
}

Compilation message

Firefighting.cpp: In function 'void sol()':
Firefighting.cpp:76:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   76 |     for (auto i : ans) cout << i+1 << " "; cout << endl;
      |     ^~~
Firefighting.cpp:76:44: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   76 |     for (auto i : ans) cout << i+1 << " "; cout << endl;
      |                                            ^~~~
# Verdict Execution time Memory Grader output
1 Correct 267 ms 30136 KB Output is correct
2 Correct 272 ms 30288 KB Output is correct
3 Correct 87 ms 15784 KB Output is correct
4 Correct 285 ms 29472 KB Output is correct
5 Correct 4 ms 7252 KB Output is correct
6 Correct 4 ms 7296 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 7252 KB Output is correct
2 Correct 4 ms 7252 KB Output is correct
3 Correct 6 ms 7252 KB Output is correct
4 Correct 4 ms 7252 KB Output is correct
5 Correct 4 ms 7252 KB Output is correct
6 Correct 4 ms 7252 KB Output is correct
7 Correct 4 ms 7376 KB Output is correct
8 Correct 4 ms 7252 KB Output is correct
9 Correct 4 ms 7252 KB Output is correct
10 Correct 4 ms 7252 KB Output is correct
11 Correct 4 ms 7252 KB Output is correct
12 Correct 5 ms 7252 KB Output is correct
13 Correct 4 ms 7252 KB Output is correct
14 Correct 5 ms 7304 KB Output is correct
15 Correct 5 ms 7252 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 7252 KB Output is correct
2 Correct 4 ms 7252 KB Output is correct
3 Correct 4 ms 7252 KB Output is correct
4 Correct 4 ms 7252 KB Output is correct
5 Correct 4 ms 7372 KB Output is correct
6 Correct 4 ms 7252 KB Output is correct
7 Correct 4 ms 7252 KB Output is correct
8 Correct 4 ms 7252 KB Output is correct
9 Correct 4 ms 7252 KB Output is correct
10 Correct 6 ms 7252 KB Output is correct
11 Correct 4 ms 7252 KB Output is correct
12 Correct 4 ms 7252 KB Output is correct
13 Correct 4 ms 7252 KB Output is correct
14 Correct 4 ms 7368 KB Output is correct
15 Correct 4 ms 7252 KB Output is correct
16 Correct 4 ms 7252 KB Output is correct
17 Correct 4 ms 7252 KB Output is correct
18 Correct 4 ms 7252 KB Output is correct
19 Correct 3 ms 7252 KB Output is correct
20 Correct 4 ms 7252 KB Output is correct
21 Correct 4 ms 7252 KB Output is correct
22 Correct 4 ms 7252 KB Output is correct
23 Correct 4 ms 7252 KB Output is correct
24 Correct 4 ms 7252 KB Output is correct
25 Correct 5 ms 7252 KB Output is correct
26 Correct 4 ms 7252 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 295 ms 30140 KB Output is correct
2 Correct 132 ms 18888 KB Output is correct
3 Correct 118 ms 19260 KB Output is correct
4 Correct 120 ms 17636 KB Output is correct
5 Correct 4 ms 7252 KB Output is correct
6 Correct 4 ms 7252 KB Output is correct
7 Correct 219 ms 28456 KB Output is correct
8 Correct 206 ms 28552 KB Output is correct
9 Correct 240 ms 28576 KB Output is correct
10 Correct 209 ms 28468 KB Output is correct
11 Correct 286 ms 30116 KB Output is correct
12 Correct 206 ms 22076 KB Output is correct
13 Correct 89 ms 16452 KB Output is correct
14 Correct 172 ms 21012 KB Output is correct
15 Correct 183 ms 23732 KB Output is correct
16 Correct 192 ms 24896 KB Output is correct
17 Correct 161 ms 22076 KB Output is correct
18 Correct 179 ms 21692 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 7508 KB Output is correct
2 Correct 5 ms 7508 KB Output is correct
3 Correct 4 ms 7380 KB Output is correct
4 Correct 5 ms 7464 KB Output is correct
5 Correct 5 ms 7636 KB Output is correct
6 Correct 5 ms 7712 KB Output is correct
7 Correct 7 ms 7636 KB Output is correct
8 Correct 5 ms 7636 KB Output is correct
9 Correct 7 ms 7636 KB Output is correct
10 Correct 7 ms 7636 KB Output is correct
11 Correct 5 ms 7624 KB Output is correct
12 Correct 5 ms 7380 KB Output is correct
13 Correct 5 ms 7636 KB Output is correct
14 Correct 6 ms 7636 KB Output is correct
15 Correct 6 ms 7568 KB Output is correct
16 Correct 5 ms 7380 KB Output is correct
17 Correct 6 ms 7380 KB Output is correct
18 Correct 6 ms 7508 KB Output is correct
19 Correct 5 ms 7508 KB Output is correct
20 Correct 5 ms 7380 KB Output is correct
21 Correct 5 ms 7508 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 274 ms 25272 KB Output is correct
2 Correct 235 ms 22036 KB Output is correct
3 Correct 234 ms 23260 KB Output is correct
4 Correct 87 ms 14736 KB Output is correct
5 Correct 270 ms 37600 KB Output is correct
6 Correct 259 ms 36412 KB Output is correct
7 Correct 249 ms 39920 KB Output is correct
8 Correct 244 ms 39100 KB Output is correct
9 Correct 247 ms 34140 KB Output is correct
10 Correct 243 ms 33220 KB Output is correct
11 Correct 331 ms 41292 KB Output is correct
12 Correct 166 ms 19680 KB Output is correct
13 Correct 243 ms 35196 KB Output is correct
14 Correct 244 ms 31656 KB Output is correct
15 Correct 266 ms 25716 KB Output is correct
16 Correct 231 ms 24596 KB Output is correct
17 Correct 217 ms 24384 KB Output is correct
18 Correct 260 ms 25684 KB Output is correct
19 Correct 154 ms 19820 KB Output is correct
20 Correct 94 ms 13688 KB Output is correct
21 Correct 243 ms 23360 KB Output is correct