Submission #1137621

#TimeUsernameProblemLanguageResultExecution timeMemory
1137621OtalpUnique Cities (JOI19_ho_t5)C++20
4 / 100
2095 ms12028 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define pii pair<int, int>
#define ff first
#define ss second
#define unm unordered_map

const ll mod = 1e9 + 7;
const int MAXN = 2e5 + 5;
const int MAXA = 2e5 + 5;

int cnt[200100], a[200100], dp[200100];
vector<int> q[200100];

void dfs(int v, int p, int k){
    if(cnt[k] != 0){
        cnt[k] = -1;
    }
    else{
        cnt[k] = a[v];
    }
    for(auto to: q[v]){
        if(to == p) continue;
        dfs(to, v, k + 1);
    }
}

void solve(){
    int n, m;
    cin>>n>>m;
    for(int i=1; i<n; i++){
        int l, r;
        cin>>l>>r;
        q[l].pb(r);
        q[r].pb(l);
    }
    for(int i=1; i<=n; i++){
        cin>>a[i];
    }
    for(int v=1; v<=n; v++){
        for(int i=1; i<=n; i++){
            cnt[i] = 0;
            dp[i] = 0;
        }
        dfs(v, 0, 0);
        int ans = 0;
        for(int i=1; i<=n; i++){
            if(cnt[i] > 0){
                ans -= dp[cnt[i]];
                dp[cnt[i]] = 1;
                ans ++;
            }
        }
        cout<<ans<<'\n';
    }   
}

int main(){
    ios_base::sync_with_stdio(NULL);cin.tie(NULL);cout.tie(NULL);
    int t=1;
    //cin>>t;
    while(t--){
        solve();
        cout<<'\n';
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...