Untitled

 avatar
unknown
plain_text
2 years ago
1.3 kB
5
Indexable
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;

typedef long long ll;

#define ios ios::sync_with_stdio(false) , cin.tie(0) , cout.tie(0)
#define pb(x) push_back(x)
#define all(x) sort(x.begin() , x.end())

void dbg(){
     cerr << endl;
}
template<typename H, typename... T> void dbg(H h, T... t){
     cerr << h << ", ";
     dbg(t...);
}
#define er(...) cerr << LINE << " <" << #VA_ARGS << ">: ", dbg(VA_ARGS)
int par[maxn] , sz[maxn];
int get(int nw){
  return (par[nw] == nw ? nw : par[nw] = get(par[nw]));
}
bool merge(int u , int v){
  u = get(u);
  v = get(v);
  if(u == v) return false;
  if(sz[u] > sz[v]) swap(u , v);
  sz[v] += sz[u];
  par[u] = v;
  return true;
}
int main(){
  ios;
  int n , m;
  cin >> n;
  m = n - 1;
  for(int i = 0 ; i < n ; i++) par[i] = i , sz[i] = 1;
  for(int i = 0 ; i < m ; i++){
    bool b = 0;
    int u , v , w;
    cin >> u >> v >> w;
    --u;--v;
    string s = to_string(w);
    for(int j = 0 ; j < s.length() ; j++){
      if((s[j] == '7') && (s[j] == '4')){
        b = 1;
      }
    }
    if(b == 0) {
      merge(u , v);
    }
  }
  ll res = 0;
  for(int i = 0 ; i < n ; i++){
    if(get(i) == i ){
      res += sz[i] * (sz[i]-1) * (n - sz[i]);
    }
  }
  cout << res;
     return 0;
}
Editor is loading...