제출 #1329009

#제출 시각아이디문제언어결과실행 시간메모리
1329009rana_azkaVinjete (COI22_vinjete)C++20
27 / 100
3095 ms12504 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];
int freq[MAXN+5];
int ans[MAXN+5];

void dfs(int cur){
    for(int i = 1; i <= m; i++){
        ans[cur] += (freq[i] > 0);
    }

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

        for(int j = l; j <= r; j++) freq[j]++;

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

        for(int j = l; j <= r; j++) freq[j]--;
    }
}

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

*/
#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...