This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <random>
#include <algorithm>
#include <bitset>
#include <chrono>
#include <cmath>
#include <deque>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <chrono>
#define m_p make_pair
#define all(x) (x).begin(),(x).end()
#define sz(x) ((x).size())
typedef long long ll;
using ull = unsigned long long;
using namespace std;
mt19937 rnd(348502);
ll mod1 = 998244353;
ll mod = 1e9 + 7;
const ll N = 70005;
vector<pair<int, int>> v[N];
ll ans[N], k, sz[N];
void getsz(int g, int p)
{
sz[g] = 1;
for (auto to : v[g])
{
if (to.first != p)
{
getsz(to.first, g);
sz[g] += sz[to.first];
}
}
}
void Dfs(int g, int p, int arj)
{
for (auto to : v[g])
{
if (to.first != p)
{
if (to.second > arj)
{
ans[g]+=sz[to.first];
Dfs(to.first, g, k - to.second);
}
else
{
Dfs(to.first, g, arj - to.second);
}
}
}
}
ll lrjutyun[N];
vector<ll> dasav, arjeqner;
void Dfs1(int g, int p)
{
sz[g]++;
dasav.push_back(g);
for (auto to : v[g])
{
if (to.first != p)
{
arjeqner.push_back(to.second);
Dfs1(to.first, g);
sz[g] += sz[to.first];
}
}
}
void solve()
{
int n, i, j, m, x, y, l;
cin >> n >> k;
if (n <= 1000)
{
for (i = 0; i < n - 1; i++)
{
cin >> x >> y >> l;
v[x].push_back({ y, l });
v[y].push_back({ x, l });
}
for ( i = 0; i < n; i++)
{
for ( j = 0; j < n; j++)
{
sz[j] = 0;
}
getsz(i, -1);
Dfs(i, -1, k);
}
for ( i = 0; i < n; i++)
{
cout << ans[i] << '\n';
}
return;
}
for (i = 0; i < n - 1; i++)
{
cin >> x >> y >> l;
v[x].push_back({ y, l });
v[y].push_back({ x, l });
lrjutyun[i] = 1;
}
lrjutyun[n - 1] = 1;
for ( i = 0; i < n; i++)
{
if (v[i].size() == 1)
{
Dfs1(i, -1);
break;
}
}
ll her = 0, r = 0;
for ( i = 0; i < n - 1; i++)
{
while (r < arjeqner.size() && her + arjeqner[r] <= k)
{
her += arjeqner[r];
r++;
}
if ((r < arjeqner.size() && her + arjeqner[r] > k) || her > k)
{
ans[dasav[r]] += lrjutyun[i] * (n - 1 - r);
lrjutyun[r] += lrjutyun[i];
}
her -= arjeqner[i];
}
for ( i = 0; i < n; i++)
{
lrjutyun[i] = 1;
}
reverse(all(dasav));
reverse(all(arjeqner));
her = 0;
r = 0;
for (i = 0; i < n - 1; i++)
{
while (r < arjeqner.size() && her + arjeqner[r] <= k)
{
her += arjeqner[r];
r++;
}
if ((r < arjeqner.size() && her + arjeqner[r] > k) || her > k)
{
ans[dasav[r]] += lrjutyun[i] * (n - 1 - r);
lrjutyun[r] += lrjutyun[i];
}
her -= arjeqner[i];
}
for ( i = 0; i < n; i++)
{
cout << ans[i] << '\n';
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
ll tt = 1;
//cin >> tt;
while (tt--) {
solve();
}
return 0;
}
Compilation message (stderr)
Main.cpp: In function 'void solve()':
Main.cpp:131:18: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
131 | while (r < arjeqner.size() && her + arjeqner[r] <= k)
| ~~^~~~~~~~~~~~~~~~~
Main.cpp:136:16: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
136 | if ((r < arjeqner.size() && her + arjeqner[r] > k) || her > k)
| ~~^~~~~~~~~~~~~~~~~
Main.cpp:153:18: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
153 | while (r < arjeqner.size() && her + arjeqner[r] <= k)
| ~~^~~~~~~~~~~~~~~~~
Main.cpp:158:16: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
158 | if ((r < arjeqner.size() && her + arjeqner[r] > k) || her > k)
| ~~^~~~~~~~~~~~~~~~~
Main.cpp:87:18: warning: unused variable 'm' [-Wunused-variable]
87 | int n, i, j, m, x, y, l;
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |