比赛 20161115 评测结果 WWWWAAAAWWWWWWWWWWWW
题目名称 树和机器人 最终得分 20
用户昵称 cwm大佬%%% 运行时间 0.177 s
代码语言 C++ 内存使用 1.91 MiB
提交时间 2016-11-15 11:37:38
显示代码纯文本
#include<cstdio>
#include<cstring>

const int N=100000,INF=0x7fffffff/10;

struct E{
	int to,v,nex;
	E(int a=-1,int b=-1,int c=-1){to=a;v=b;nex=c;}
};
E tree[N];
int top=0;
int head[N];

inline int Max(int x,int y){return x>y?x:y;}

void add_edge(int fro,int to,int v){
	tree[top]=(E){to,v,head[fro]};
	head[fro]=top++;
}

bool vis[N];
int dfs(int p){
	if(vis[p])return -INF;
	vis[p]=1;
	int ret=0;
	for(int i=head[p];i!=-1;i=tree[i].nex)ret=Max(ret,dfs(tree[i].to)+tree[i].v);
	return ret;
}

int main()
{
	freopen("trobot.in","r",stdin);
	freopen("trobot.out","w",stdout);
	memset(head,-1,sizeof(head));
	memset(vis,0,sizeof(vis));
	int n,r,k;
	scanf("%d%d%d",&n,&r,&k);
	int tot=0;
	for(int i=1;i<n;i++){
		int a,b,v;
		scanf("%d%d%d",&a,&b,&v);
		tot+=v*2;
		add_edge(a,b,v);
		add_edge(b,a,v);
	}
	printf("%d",tot-dfs(r));
	return 0;
}