for(long long i = 0; i < tree[x].size(); ++ i)if(tree[x][i]!=pre){
// long long k = sum+cost[x][i]*(cnt+sumk[x]-t2[x][j])+ssum[x]-t1[x][j];
// long long t = cnt+1+sumk[x]-t2[x][j++];
DFS(x,tree[x][i],sum+cost[x][i]*(cnt+sumk[x]-t2[x][j])+ssum[x]-t1[x][j],cnt+1+sumk[x]-t2[x][j++]);
}
与
for(long long i = 0; i < tree[x].size(); ++ i)if(tree[x][i]!=pre){
long long k = sum+cost[x][i]*(cnt+sumk[x]-t2[x][j])+ssum[x]-t1[x][j];
long long t = cnt+1+sumk[x]-t2[x][j++];
DFS(x,tree[x][i],k,t);
}
为什么结果不一样 ?大写的DFS里的k t
如果直接写到DFS里就出错了
答:
try this:
for(long long i = 0; i < tree[x].size(); ++ i)if(tree[x][i]!=pre){
DFS(x,tree[x][i],sum+cost[x][i]*(cnt+sumk[x]-t2[x][j])+ssum[x]-t1[x][j],cnt+1+sumk[x]-t2[x][j]);
j++;
}
与函数参数的计算次序有关,如果先处理最后的,会影响前面的参数。
阅读(952) | 评论(0) | 转发(0) |