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