2026/4/16 23:55:34
网站建设
项目流程
阿里云可以做网站么,网站建设策划实施要素,中装建设属于什么板块,别人做的网站如何要回服务器问题#xff1a;
有一个树形结构的电路板#xff0c;其中有一个激发器#xff08;根节点#xff09;#xff0c;电流从根节点出发#xff0c;沿着树边传播到所有叶子节点#xff08;终止节点#xff09;。每条边有一个传播时间#xff0c;我们需要通过增加某些边的传播…问题有一个树形结构的电路板其中有一个激发器根节点电流从根节点出发沿着树边传播到所有叶子节点终止节点。每条边有一个传播时间我们需要通过增加某些边的传播时间使得所有叶子节点同时接收到电流。解法贪心从叶子节点开始向上处理对于每个节点计算从其到其子树中叶子节点的最大路径长度对于节点的每个子节点将它们的路径长度补齐到这个最大值向上传递时加上当前节点到父节点的边权算法使用BFS或DFS建立树结构因为N很大需要避免递归深度过大通过拓扑排序从叶子到根处理节点对于每个节点找到所有子节点中的最大f[y]w即最大路径长度将所有子节点的路径长度补齐到这个最大值当前节点的f[x]这个最大值代码#includebits/stdc.husing namespace std;const int N500010;int h[N],v[N1],nxt[N1],cnt,d[N1];long long res,f[N];int q[N],fa[N];void add(int x,int y,int z){v[cnt]y;d[cnt]z;nxt[cnt]h[x];h[x]cnt;}int main(){int n,st;scanf(%d%d,n,st);for(int i1;in;i){int x,y,z;scanf(%d%d%d,x,y,z);add(x,y,z);add(y,x,z);}int l0,r0;q[0]st;fa[st]0;while(lr){int xq[l];for(int ih[x];i;inxt[i]){int yv[i];if(yfa[x]) continue;fa[y]x;q[r]y;}}for(int ir;i0;i--){int xq[i];long long mx0;for(int jh[x];j;jnxt[j]){int yv[j],wd[j];if(yfa[x]) continue;f[x]max(f[x],f[y]w);}for(int jh[x];j;jnxt[j]){int yv[j],wd[j];if(yfa[x]) continue;resf[x]-(f[y]w);}}printf(%lld\n,res);return 0;}