#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define pb push_back
#define int long long
#define fi first
#define se second
const int N = 3e5 + 5, M = 1e9 + 7, LG = 20;
int n , A[N] , fen[N] , cnt[N] , u , v, l , r , m , val , ANS[N];
vector<vector<int>> lis[N];
map<int,int> cn;
set<vector<int>> rg;
// void add(int i , int x){
// while(i <= n){
// cnt[i]+=x;
// fen[i]+=x;
// i += (i&(-i));
// }
// }
// int prep(int i){
// int su = 0 , re = 0;
// while (i > 0){
// su += fen[i];
// re += cnt[i];
// i -= (i&(-i));
// }
// return su;
// }
void dfs(int v , int p){
for (auto u : lis[v]){
if (u[0] == p) continue;
rg.insert({u[1],u[2],u[0],v});
val = 0;
int l1 = 0 , r1 = 0;
for (auto i : rg){
if (l1 == 0){
val += (i[1]-i[0]+1);
l1 = i[0];
r1 = i[1];
continue;
}
if (r1 < i[0]){
val += (i[1]-i[0]+1);
l1 = i[0];
r1 = i[1];
}else{
val += (max(i[1],r1) - r1);
r1 = max(i[1],r1);
}
}
ANS[u[0]] = val;
dfs(u[0] , v);
rg.erase({u[1],u[2],u[0],v});
}
}
void solve(){
cin >> n >> m;
for (int i=1 ; i<=n ; i++){
cin >> u >> v >> l >> r;
lis[u].pb({v,l,r});
lis[v].pb({u,l,r});
}
dfs(1 , 1);
for (int i=2 ; i<=n ; i++){
cout << ANS[i] << endl;
}
}
signed main(){
for (int i=1 ; i<N ; i++){
int j = i;
while(j < N){
fen[j] += 1;
cnt[j] -= 1;
j += (j&(-j));
}
}
// freopen("" , "r" , stdin);
// freopen("" , "w" , stdout);
// cout << setprecision(30);
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int ts = 1;
// cin >> ts;
while(ts--){
solve();
}
}
| # | 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... |