1 条题解

  • 0
    @ 2026-5-5 16:27:54
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    ll n;
    vector<vector<pair<int,int>>> g;
    ll G,B;
    ll dfs(int u,int p=-1)
    {
    	ll ret = 1;
    	for(auto v:g[u])	if(v.first!=p)
    	{
    		ll vn = dfs(v.first,u);
    		if(vn&1)	G+=v.second;
    		B += min(vn,2*n-vn)*v.second;
    		ret+=vn;
    	}
    	return ret;
    }
     
    int main()
    {
    	int t;cin>>t;
    	while(t--)
    	{
    		cin>>n;
    		g.clear();
    		g.resize(2*n);
    		for(int i=1;i<2*n;i++)
    		{
    			int a,b,c;cin>>a>>b>>c;
    			a--,b--;
    			g[a].push_back({b,c});
    			g[b].push_back({a,c});
    		}
    		G=0,B=0;
    		dfs(0);
    		cout<<G<<" "<<B<<endl;
    	}
    	cin>>t;
    }
    
    • 1

    信息

    ID
    6866
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者