Untitled
unknown
plain_text
2 years ago
1.3 kB
9
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...