码迷,mamicode.com
首页 > 其他好文 > 详细

机器扫边

时间:2020-09-12 21:42:18      阅读:40      评论:0      收藏:0      [点我收藏+]

标签:sample   cin   html   sub   col   c++   min   ups   nbsp   

机器扫边

给一棵n个节点的树, 节点编号为1~n, 每条边都有一个花费值。
有k个机器人从s点出发, 问让机器人遍历所有边,最少花费值多少?

输入

第一行输入三个整数n(1 \le n \le 10^4), s(1 \le s \le n), k(1 \le k \le 10)n(1n104),s(1sn),k(1k10)。

接下来n-1行,每行三个整数x_i, y_i (1 \le x_i, y_i \le n, x_i \ne y_i), w_i(1 \le w_i \le 10^4)xi?,yi?(1xi?,yi?n,xi??=yi?),wi?(1wi?104), 表示x_i, y_ixi?,yi?之间有一条边,花费值为w_iwi?

输入保证是一棵树。

输出

输出最小花费值。

样例

输入

3 1 1
1 2 1
1 3 1

输出

3

输入

3 1 2
1 2 1
1 3 1

输出

2
/*************************************************************************
    > Author: Henry Chen
    > Mail: 390989083@qq.com 
 ************************************************************************/
#include<bits/stdc++.h>
using namespace std;
const int N = 10009;
struct edge
{
    int v,w;
}e[2*N];
int head[N],nxt[2*N];
int tot = 0;
int n,m,s;
long long dp[N][15];
void add_edge(int u,int v,int w)
{
    e[++tot] = (edge){v,w};
    nxt[tot] = head[u];
    head[u] = tot;
}
void dfs(int u,int fa)
{

    for(int i = head[u];i != -1;i = nxt[i])
    {
        int v = e[i].v;
        long long w = 1ll*e[i].w;
        if(v != fa)
        {
            dfs(v,u);
            for(int j = m;j >= 1;j--)
            {
                dp[u][j] += dp[v][0] + 2 * w;
                for(int k = 1;k <= j;k++)
                {
                    dp[u][j] = min(dp[u][j],dp[u][j-k]+dp[v][k]+w * k);
                }
            }
            dp[u][0] += dp[v][0] + 2 * w;
        }
    }
}
int main()
{
    cin >> n >> s >> m;
    memset(head,-1,sizeof(head));
    memset(dp,0,sizeof(dp));
    tot = 0;
    for(int i = 1;i < n;i++)
    {
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        add_edge(u,v,w);
        add_edge(v,u,w);
    }
    dfs(s,-1);
    printf("%lld\n",dp[s][m]);
    return 0;
}

 

机器扫边

标签:sample   cin   html   sub   col   c++   min   ups   nbsp   

原文地址:https://www.cnblogs.com/mzyy1001/p/13592136.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!