Submission #1190335

#TimeUsernameProblemLanguageResultExecution timeMemory
1190335vitoVinjete (COI22_vinjete)C++20
24 / 100
501 ms589824 KiB
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
#define F first
#define S second
#define sz(x) int(x.size())
const int MAX=1e5+5;
vector<pair<int, pair<int, int>>> gr[MAX];
int n, m, out[MAX];
set<pair<int, int>> a[MAX];
void dfs(int v, int p) {
	for(auto &u : gr[v]) {
		if(u.F!=p) {
			a[u.F]=a[v];
			a[u.F].insert(u.S);
			int mx=0;
			for(auto &i : a[u.F]) {
				if(mx<i.F) {
					out[u.F]+=i.S-i.F+1;
				}
				else if(mx<i.S) {
					out[u.F]+=i.S-mx;
				}
				mx=max(mx, i.S);
			}
			dfs(u.F, v);
		}
	}
}
signed main() {
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	cin >> n >> m;
	for(int i=0; i<n-1; i++) {
		int x, y, l, r;
		cin >> x >> y >> l >> r;
		gr[x].push_back(make_pair(y, make_pair(l, r)));
		gr[y].push_back(make_pair(x, make_pair(l, r)));
	}
	dfs(1, 1);
	for(int i=2; i<=n; i++) {
		cout << out[i] << '\n';	
	}
	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...