제출 #1329019

#제출 시각아이디문제언어결과실행 시간메모리
1329019rana_azkaVinjete (COI22_vinjete)C++20
24 / 100
3093 ms8472 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

const int INF = 1e18;
const int MOD = 1e9+7;
const int MAXN = 2e5;

typedef tuple<int, int, int> ti3;

int n, m;
vector<ti3> adj[MAXN+5];
int par[MAXN+5];
multiset<pair<int, int>> mlst;
int ans[MAXN+5];

void dfs(int cur){
    int idx = 0;
    for(auto [l, r] : mlst){
        if(idx > r) continue;

        idx = max(l, idx);
        ans[cur] += r - idx + 1;
        idx = r + 1;
    }

    for(auto [next, l, r] : adj[cur]){
        if(next == par[cur]) continue;

        mlst.insert({l, r});

        par[next] = cur;
        dfs(next);

        mlst.erase(mlst.find({l, r}));
    }
}

void solve(){
    cin >> n >> m;
    for(int i = 1; i <= n-1; 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(1);

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

signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int tc = 1;
    // cin >> tc;
    while(tc--){
        solve();
    }

    return 0;
}

/*
6 6
1 2 2 4
1 3 1 4
2 4 3 5
2 5 5 6
3 6 2 3
=> 
3
4
4
5
4

5 6
1 2 2 2
2 3 3 3
3 5 1 5
3 4 1 1
=> 
1
2
3
5
*/
#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...