zoukankan      html  css  js  c++  java
  • [ZJOI2007]时态同步

    因为修改的地方越靠上,影响的节点就越多。
    O(n)求出从叶到每个节点的最长时间,对每个子树同步即可。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    const int N=500005;
    int n,s,head[N],ecnt,dis[N];
    long long ans;
    struct Edge {
    	int to,nxt,val;
    } e[N<<1];
    void add(int bg,int ed,int val) {
    	e[++ecnt].nxt=head[bg],e[ecnt].to=ed,e[ecnt].val=val,head[bg]=ecnt;
    }
    int maxl;
    void dfs(int x,int fa) {
    	if(!head[x]) maxl=max(maxl,dis[x]);
    	for(int i=head[x]; i; i=e[i].nxt) {
    		int v=e[i].to;
    		if(v==fa) continue;
    		dfs(v,x);
    		dis[x]=max(dis[x],dis[v]+e[i].val);
    	}
    }
    void dfs1(int x,int fa) {
    	for(int i=head[x]; i; i=e[i].nxt) {
    		int v=e[i].to;
    		if(v==fa) continue;
    		dfs1(v,x);
    		ans+=dis[x]-dis[v]-e[i].val;
    	}
    }
    int main() {
    	scanf("%d%d",&n,&s);
    	for(int i=1,a,b,v; i<n; i++) {
    		scanf("%d%d%d",&a,&b,&v);
    	        add(b,a,v);
    		add(a,b,v);
    	}
    	dfs(s,0);
    	dfs1(s,0);
    	cout<<ans;
    }
    
    我是咸鱼。转载博客请征得博主同意Orz
  • 相关阅读:
    cnpm 安装和 command not found
    C#-弄懂泛型和协变、逆变
    2019年阅读
    ES5和ES6数组方法
    ASP.NET MVC中的捆绑和压缩技术
    markdown解析与着色
    Oauth2.0
    同源策略和跨域的解决方案
    windows常用命令
    Java 9 在win10环境搭建
  • 原文地址:https://www.cnblogs.com/sdfzhsz/p/9331072.html
Copyright © 2011-2022 走看看