tql%%%
by Robert_Bumaro @ 2019-09-04 17:24:44
tql%%%
by 小蒟蒻皮皮鱼 @ 2019-09-04 17:31:27
好像知道了,这道题给的是双向边,所以反边的权值不能为0
by 暗ざ之殇 @ 2019-09-04 17:45:16
tql%%%
by 樱花树下少年 @ 2019-09-04 18:54:18
附上正确代码
```
#include<bits/stdc++.h>
using namespace std;
#define open(s) freopen( s".in", "r", stdin ), freopen( s".out", "w", stdout )
#define MAXN 100005
#define MAXM 200005
#define LL long long
int n, S;
int hd[MAXN], to[MAXM], nxt[MAXM], tot(1);
LL val[MAXM];
void Add( int x, int y, int z ){
nxt[++tot] = hd[x]; hd[x] = tot; val[tot] = z; to[tot] = y;
nxt[++tot] = hd[y]; hd[y] = tot; val[tot] = z; to[tot] = x;
}
LL DFS( int x, int fa ){
LL ans(0); bool flg(0);
for ( int i = hd[x]; i; i = nxt[i] )
if ( to[i] != fa ) ans += min( DFS( to[i], x ), val[i] ), flg = 1;
if ( !flg ) return LONG_LONG_MAX;
return ans;
}
int main(){
scanf( "%d%d", &n, &S );
for ( int i = 1; i < n; ++i ){
int x, y; LL z;
scanf( "%d%d%lld", &x, &y, &z );
Add( x, y, z );
}
printf( "%lld\n", DFS( S, S ) );
return 0;
}
```
by 樱花树下少年 @ 2019-09-04 18:55:40