Submission #1359068

#TimeUsernameProblemLanguageResultExecution timeMemory
1359068yogesh_saneTourists (EGOI22_tourists)C++20
25 / 100
203 ms327680 KiB
#include <iostream>
#include <vector>
using namespace std;

vector<vector<int>>dist;
vector<vector<int>>adj;
void dfs(int s, int p, int root){
    dist[root][s] = dist[root][p]+1;
    for(int u : adj[s])
        if(u != p)
            dfs(u,s,root);
}
int main(){
    //freopen("in.txt","r", stdin);
    int n, m, q;
    cin >> n >> m >> q;
    vector<int> a(m+1);
    for(int i = 1; i <= m; i++)
        cin >> a[i];
    adj.assign(n+1,vector<int>());
    for(int i = 0; i < n-1; i++){
        int u, v;
        cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    dist.assign(n+1,vector<int>(n+1));
    for(int i = 1; i <= n; i++){
        dist[i][0] = -1;
        dfs(i,0,i);
    }
    vector<long long>tourist_opinion(m+1);
    while(q--){
        char qtype;
        cin >> qtype;
        if(qtype == 't'){
            int f,g,c;
            cin >> f >> g >> c;
            for(int i = f; i <= g; i++){
                tourist_opinion[i] -= dist[a[i]][c];
                a[i] = c;
            }
        }else if(qtype == 'e'){
            int c, d;
            cin >> c >> d;
            for(int i = 1; i <= m; i++)
                if(a[i] == c)
                    tourist_opinion[i] += d;
        }else{
            int v;
            cin >> v;
            cout << tourist_opinion[v] << '\n';
        }
    }
    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...