0

I was doing a problem it was related to normal DFS, few of test cases were not passing so i tried different things:

1: (long long)(d * (n - sz[u])); // not passing

2: d* 1LL* (n-sz[u]); //passing all

const int N = 100000;
vector <int> adj[N + 1];
bool visited[N + 1];
int sz[N + 1];
int n;
long long num, den;

void dfs(int u, int d) {
visited[u] = 1;
sz[u] = 1;
for(auto v: adj[u]) {
   if(!visited[v]) {
      dfs(v, d + 1);
      sz[u] += sz[v];
   }
}
if(u != 1) {
   num += (long long)(d  *  (n - sz[u])); //prob lies here
   den += d;
}

}

I think both are essentially same, but clearly they are not. can someone help ?

edit: what exactly k = d*1LL means ?? what would be the value of k ?

0 Answers0