Submission #1298489

#TimeUsernameProblemLanguageResultExecution timeMemory
1298489muhammad-ahmadVinjete (COI22_vinjete)C++20
24 / 100
1062 ms589824 KiB
// #include <bits/stdc++.h>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <map>
#include <vector>
#include <iomanip>
#include <string>
#include <queue>
#include <set>
#include <deque>
#include <numeric>
#include <stack>
#include <chrono>
using namespace std;

void fast_io(){
	// freopen("", "r", stdin);
	// freopen("", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie(); cout.tie();
	cout << setprecision(9);
}

#define int long long
#define endl '\n'
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define fi first
#define se second

const int N = 2e5 + 5;


int n, m; 
int ans[N];
vector<pair<int, pair<int, int>>> adj[N];

void dfs(int u = 1, int par = 0, vector<pair<int, int>> cost = {}){
	sort(all(cost));
	vector<pair<int, int>> ch;
	if (cost.size()){
		ch.push_back(cost[0]);
		for (int i = 1; i < (int) cost.size(); i++){
			if (cost[i].first <= ch.back().second){
				auto x = ch.back();
				ch.pop_back();
				x.second = max(x.second, cost[i].second);
				ch.push_back(x);
			}
			else ch.push_back(cost[i]);
		}
	}
	
	// cout << u << endl;
	// for (auto i : ch) cout << i.first << ' ' << i.second << endl;
	// cout << endl;
	
	for (int i = 0; i < (int) ch.size(); i++) ans[u] += ch[i].second - ch[i].first + 1;

	for (auto [v, interval] : adj[u]){
		if (v == par) continue;
		ch.push_back({interval.first, interval.second});
		dfs(v, u, ch);
		ch.pop_back();
	}
}


void solve() {
	cin >> n >> m;
	
	
	// swap(m, n);
	
	for (int i = 1; i < n; i++){
		int u, v, l, r; cin >> u >> v >> l >> r;
		adj[u].push_back({v, {l, r}});
		adj[v].push_back({u, {l, r}});
	}

	dfs();
	
	for (int i = 2; i <= n; i++) cout << ans[i] << ' ';
	cout << endl;
	
	
	return;
}

signed main() {
    fast_io();
    srand(chrono::steady_clock::now().time_since_epoch().count());
    int tc = 1;
    // cin >> tc;
    while (tc--) solve();
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...