Submission #1210281

#TimeUsernameProblemLanguageResultExecution timeMemory
1210281spampotsRegions (IOI09_regions)C++20
30 / 100
486 ms196608 KiB
#include<bits/stdc++.h> using namespace std; int main(){ // this soluion might pass for R <= 500 int N, R, Q; cin >> N >> R >> Q; vector<vector<int>> dp(N+1, vector<int>(R+1, 0)); vector<int> region(N+1); vector<vector<int>> adj(N+1); vector<vector<int>> ans(R+1, vector<int>(R+1, 0)); cin >> region[1]; for(int i = 2; i <= N; ++i){ int x; cin >> x; adj[x].push_back(i); adj[i].push_back(x); cin >> region[i]; } function<void(int, int)> dfs = [&](int parent, int node){ for(int x : adj[node]){ if(x == parent) continue; dfs(node, x); dp[node][region[x]] += 1; for(int i = 1; i <= R; ++i) dp[node][i] += dp[x][i]; } for(int i = 1; i <= R; ++i){ if(i == region[node]) continue; ans[region[node]][i] += dp[node][i]; } }; dfs(-1, 1); // for(int i = 1; i <= N; ++i){ // for(int j = 0; j <= R; ++j) // cout << dp[i][j] << ' '; // cout << endl; // } for(int i = 0; i < Q; ++i){ int r1, r2; cin >> r1 >> r2; cout << ans[r1][r2] << endl; fflush(stdout); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...