제출 #1321126

#제출 시각아이디문제언어결과실행 시간메모리
1321126ivan_alexeevUnique Cities (JOI19_ho_t5)C++20
4 / 100
2094 ms15308 KiB
#include <bits/stdc++.h>

using namespace std;

#ifndef lisie_bimbi
#define endl '\n'
#pragma GCC optimize("O3")
#pragma GCC target("avx,avx2,bmi2,fma")
#endif

using ll = long long;
const ll inf = 1'000'000'000;

vector<vector<int>> v;
vector<int> c;

void calcdist(int u, int par, vector<int> &d){
    if(par == -1){
        d[u] = 0;
    }else{
        d[u] = d[par] + 1;
    }
    for(auto i : v[u]){
        if(i != par){
            calcdist(i, u, d);
        }
    }
}

int n;

void solve(){
    int m;
    cin >> n >> m;
    v.resize(n);
    for(int i = 0; i < n - 1; i++){
        int x, y;
        cin >> x >> y;
        x--;y--;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    c.resize(n);
    for(int i = 0; i < n; i++){
        cin >> c[i];
    }
    for(int i = 0; i < n; i++){
        vector<int> d(n);
        calcdist(i, -1, d);
        vector<vector<int>> z(n);
        for(int j = 0; j < n; j++){
            z[d[j]].push_back(c[j]);
        }
        set<int> cc;
        for(int zz = 1; zz < n; zz++){
            auto j = z[zz];
            if(j.size() == 1){
                cc.insert(j[0]);
            }
        }
        cout << cc.size() << endl;
    }
}

signed main(){
#ifdef lisie_bimbi
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#else
#endif
    cin.tie(nullptr)->sync_with_stdio(false);
    int t = 1;
    //cin >> t;
    while(t--){
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...