k * 1LL是什么意思? K是任何整数

时间:2017-11-08 13:50:55

标签: c++ c++11 c++14

我遇到的问题是它与正常的DFS有关,很少有测试用例没有通过,所以我尝试了不同的东西:

1 :(很长)(d *(n - sz [u])); //不通过

2:d * 1LL *(n-sz [u]); //传递所有

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;
}

}

我认为两者基本相同,但显然它们不是。有人可以帮忙吗?

编辑:究竟k = d * 1LL究竟是什么意思?什么是k的价值?

0 个答案:

没有答案