Submission details
Task:Stations
Sender:adex720
Submission time:2025-03-03 18:07:56 +0200
Language:C++ (C++20)
Status:COMPILE ERROR

Compiler report

input/code.cpp:7:1: error: '::main' must return 'int'
    7 | ll main()
      | ^~

Code

#include <bits/stdc++.h>

using namespace std;

using ll = long long;

ll main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    ll n, k, a, b, c;
    cin >> n >> k;

    vector<pair<ll, ll>> yhteydet[n];

    for (ll i = 1; i < n; i++)
    {
        cin >> a >> b >> c;
        yhteydet[a].push_back({b, c});
        yhteydet[b].push_back({a, c});
    }

    a = -1;
    b = -1;
    for (ll i = 0; i < n; i++)
    {
        if (yhteydet[i].size() > 1)
            continue;
        if (a == -1)
            a = i;
        else
            b = i;
    }

    ll maarat[n];
    for (ll i = 0; i < n; i++)
    {
        maarat[i] = 0ll;
    }

    for (ll sdfgs = 1; sdfgs <= 2; sdfgs++)
    {
        vector<tuple<ll, ll, ll>> edelliset;
        queue<tuple<ll, ll, ll>> seuraavat;

        ll e = -1;
        ll edellinen = sdfgs == 1 ? a : b;
        ll uusia = n;

        while (true)
        {
            uusia--;

            auto s = yhteydet[edellinen].at(0);
            ll seuraava = s.first;
            if (seuraava == e)
            {
                s = yhteydet[edellinen].at(1);
                seuraava = s.first;
            }

            ll pituus = s.second;

            ll tankkauksia = 0;
            ll tuloja = 0;
            for (auto u : edelliset)
            {
                ll maara = get<0>(u);
                ll jaljella = get<1>(u);
                ll poistuu = get<2>(u);
                if (jaljella >= pituus)
                {
                    seuraavat.push({maara - poistuu, jaljella - pituus, poistuu});
                }
                else
                {
                    tankkauksia += maara - poistuu;
                    tuloja += poistuu;
                }
            }

            maarat[edellinen] += tankkauksia;
            seuraavat.push({tankkauksia + uusia, k - pituus, tuloja + 1});

            if (seuraava == (sdfgs == 1 ? b : a))
                break;
            e = edellinen;
            edellinen = seuraava;

            edelliset.clear();
            while (!seuraavat.empty())
            {
                edelliset.push_back(seuraavat.front());
                seuraavat.pop();
            }
        }
    }

    for (ll i : maarat)
    {
        cout << i << "\n";
    }
}
/*
10 18
1 0 6
1 2 1
2 3 4
3 4 9
4 5 5
5 6 3
6 7 8
7 8 7
8 9 2

*/