Submission #1156965

#TimeUsernameProblemLanguageResultExecution timeMemory
1156965PacybwoahUnique Cities (JOI19_ho_t5)C++20
4 / 100
2096 ms14640 KiB
#include<iostream>
#include<algorithm>
#include<utility>
#include<vector>
#include<map>
#include<cmath>
#include<set>
using namespace std;
vector<vector<int>> graph;
vector<vector<int>> dist;
vector<int> col;
void dfs(int node, int parent, int d){
    dist[d].push_back(node);
    for(auto &x: graph[node]){
        if(x == parent) continue;
        dfs(x, node, d + 1);
    }
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n, m;
    cin >> n >> m;
    graph.resize(n + 1);
    col.resize(n + 1);
    dist.resize(n + 1);
    for(int i = 1; i < n; i++){
        int a, b;
        cin >> a >> b;
        graph[a].push_back(b);
        graph[b].push_back(a);
    }
    for(int i = 0; i < n; i++){
        cin >> col[i + 1];
    }
    for(int i = 1; i <= n; i++){
        vector<vector<int>>().swap(dist);
        dist.resize(n + 1);
        dfs(i, i, 0);
        vector<int> cp;
        for(int j = 1; j <= n; j++){
            if((int)dist[j].size() == 1){
                cp.push_back(col[dist[j][0]]);
            }
        }
        sort(cp.begin(), cp.end());
        cp.resize(unique(cp.begin(), cp.end()) - cp.begin());
        cout << (int)cp.size() << "\n";
    }
}
// g++ -std=c++17 -Wall -Wextra -Wshadow -fsanitize=undefined -fsanitize=address -o run pEsub1.cpp
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...