Codeforces Round 881 (Div. 3) 1843D - Apple Tree Solution
Problem Link : https://codeforces.com/contest/1843/problem/D
Solution in C++:
- /// Author : AH_Tonmoy
- #include <bits/stdc++.h>
- using namespace std;
- const int mx = 2e5 + 9 ;
- vector<int> adj[mx];
- int cnt[mx] ;
- void dfs( int u , int par=0) {
- cnt[u] = 0 ;
- for ( auto v : adj[u]){
- if ( v == par ) continue ;
- dfs(v,u) ;
- cnt[u] +=cnt[v] ;
- }
- cnt[u] = max (cnt[u] , 1) ;
- }
- int32_t main() {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- int t;
- cin >> t;
- while (t--) {
- int n ;
- cin >> n ;
- for ( int i = 1 ; i <= n ; i++){
- adj[i].clear() ;
- }
- for ( int i = 1 ; i < n ; i++){
- int u , v ;
- cin >> u >> v ;
- adj[u].push_back(v) ;
- adj[v].push_back(u) ;
- }
- int q ;
- cin >> q ;
- dfs(1) ;
- while (q--) {
- int x , y ;
- cin >> x >> y ;
- cout << 1ll *cnt[x] * cnt[y] << '\n' ;
- }
- }
- return 0 ;
- }
No comments