刚学网络流,全WA,求大佬看看

P3931 SAC E#1 - 一道难题 Tree

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


|