109C - Lucky Tree - CodeForces Solution


dp dsu trees *1900

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>

using namespace std;

#define int long long 



int p[200005], sum[200005], n, res;

int find(int x)
{
  if (p[x] != x)
    p[x] = find(p[x]);
  return p[x];
}

void merge(int a,int b)
{
  a = find(a), b = find(b);
  if (a == b)
    return;
  p[a] = b;
  sum[b] += sum[a];
}

bool ck(int x)
{
  while (x)
  {
    if (x % 10 != 7 && x % 10 != 4)
      return false;
    x /= 10;
  }
  return true;
}

int32_t main()
{
  cin >> n;
  for (int i = 1; i <= n; i++)
  {
    p[i] = i;
    sum[i] = 1;
  }
  for (int i = 1; i < n; i++)
  {
    int a, b, c;
    cin >> a >> b >> c;
    if (!ck(c))
      merge(a, b);
  }

  for (int i = 1; i <= n; i++)
  {
    int t = n - sum[find(i)];
    res += t * (t - 1);
  }
  cout << res << endl;
}


Comments

Submit
0 Comments
More Questions

1517D - Explorer Space
1230B - Ania and Minimizing
1201A - Important Exam
676A - Nicholas and Permutation
431A - Black Square
474B - Worms
987B - High School Become Human
1223A - CME
1658B - Marin and Anti-coprime Permutation
14B - Young Photographer
143A - Help Vasilisa the Wise 2
320A - Magic Numbers
1658A - Marin and Photoshoot
514A - Chewbaсca and Number
382A - Ksenia and Pan Scales
734B - Anton and Digits
1080A - Petya and Origami
1642D - Repetitions Decoding
1440A - Buy the String
1658F - Juju and Binary String
478A - Initial Bet
981A - Antipalindrome
365A - Good Number
1204B - Mislove Has Lost an Array
1409D - Decrease the Sum of Digits
1476E - Pattern Matching
1107A - Digits Sequence Dividing
1348A - Phoenix and Balance
1343B - Balanced Array
1186A - Vus the Cossack and a Contest