JacobianDet

Untitled

Mar 7th, 2023
825
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.75 KB | Source Code | 0 0
  1. #include <bits/stdc++.h>
  2. #define MV 200001
  3. #define eb emplace_back
  4.  
  5. using namespace std;
  6.  
  7. int memo[MV], ar[MV];
  8. vector<int> G[MV];
  9.  
  10. int dfs_visit(int s, int p, int k)
  11. {
  12.     if(p != -1)
  13.     ar[s] = ((ar[s]%k) + (ar[p]%k))%k;
  14.     int ans = memo[ar[s]];
  15.     memo[ar[s]]++;
  16.     for(const auto &u : G[s])
  17.     {
  18.         if(u != p)
  19.         ans += dfs_visit(u, s, k);
  20.     }
  21.     memo[ar[s]]--;
  22.     return ans;
  23. }
  24.  
  25. int main()
  26. {
  27.     int n,k;
  28.     cin>>n>>k;
  29.     for(int i=0;i<n-1;i++)
  30.     {
  31.         int s,d;
  32.         cin>>s>>d;
  33.         G[s].eb(d);
  34.         G[d].eb(s);
  35.     }
  36.     memo[0] = 1;
  37.     for(int i=1;i<=n;i++)
  38.     {
  39.         cin>>ar[i];
  40.         ar[i] %= k;
  41.     }
  42.     int ans = dfs_visit(1, -1, k);
  43.     cout<<ans<<"\n";
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment