题目链接:

Modules

描述

蒜头有一块主板,为了提升其性能,可在主板上安置若干增强模块。蒜头有n个不同的增强模块,增强模块可以直接安置在主板上,也可以安置在已经直接或间接连接在主板上的其他增强模块上。

每个增强模块具有一个初始强化值,其中第i个模块的初始强化值为Pi。在所有模块安置完成后,每个模块的最终强化值为其自身初始强化值及直接安置在其上的所有模块的最终强化值之和。

除此之外,有m对模块由于具有良好的契合度,在安置时可以获得额外的强化值加成:将模块Aj直接安置在模块Bj上时,模块Bj的强化值可以获得Qj的额外加成。

主板的最终强化值为直接安置在主板上的所有模块最终强化值之和,请合理安置模块使得主板获得最大的强化值,并输出最大强化值。

输入

输入第一行为一个整数T,表示一共有T组测试数据。

对于每组测试数据:

第一行为两个整数n,m(1≤n≤3000,0≤m≤3000)。

第二行为n个整数Pi(1≤Pi≤109),数之间以单个空格间隔。

接下来m行中,第j行有三个整数Aj,Bj,Qj(1≤Aj,Bj≤n,Aj≠Bj,1≤Qj≤109)。

数据保证同一组(Aj,Bj)只出现一次。

输出

对于每组测试数据:输出一个整数表示主板的最大强化值。

样例输入1

1
3 4
1 2 4
3 1 8
3 2 16
2 1 32
1 2 64

样例输出1

87

题意:

思路:可以发现所有的p最后都会加到答案上,然后那些边要求不能有环,而且出度为1,把边方向就是求最大树形图了,可以建一个虚根,然后向每个点连边,跑朱刘算法就好了,这里的最大树形图一定存在(加了根之后边数会变多,我数组开小了一直wa)AC代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=3e3+10;
LL ans=0;
const LL inf=1e14;
int n,m,vis[maxn],id[maxn],pre[maxn],cnt=0;
LL in[maxn];
struct Edge
{int u,v;LL cost;
}edge[2*maxn];
inline void add_edge(int u,int v,LL w)
{cnt++;edge[cnt].u=u;edge[cnt].v=v;edge[cnt].cost=w;
}
inline LL solve()
{LL ret=0;int root=0;for(int i=1;i<=n;i++)add_edge(root,i,0);n=n+1;while(true){for(int i=0;i<n;i++)in[i]=-inf;for(int i=1;i<=cnt;i++){if(edge[i].cost>in[edge[i].v]&&edge[i].u!=edge[i].v){in[edge[i].v]=edge[i].cost;pre[edge[i].v]=edge[i].u;}}int cntnode=0;memset(id,-1,sizeof(id));memset(vis,-1,sizeof(vis));in[root]=0;for(int i=0;i<n;i++){ret=ret+in[i];int v=i;while(vis[v]!=i&&v!=root&&id[v]==-1){vis[v]=i;v=pre[v];}if(id[v]==-1&&v!=root){for(int u=pre[v];u!=v;u=pre[u])id[u]=cntnode;id[v]=cntnode++;}}if(cntnode==0)break;for(int i=0;i<n;i++){if(id[i]==-1)id[i]=cntnode++;}for(int i=1;i<=cnt;i++){int v=edge[i].v;edge[i].u=id[edge[i].u];edge[i].v=id[edge[i].v];if(edge[i].u!=edge[i].v){edge[i].cost-=in[v];}}n=cntnode;root=id[root];}return ret;
}
int main()
{int T;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);cnt=0;ans=0;int u,v,w,x;for(int i=1;i<=n;i++)scanf("%d",&x),ans=ans+x;for(int i=1;i<=m;i++){scanf("%d%d%d",&u,&v,&w);add_edge(v,u,(LL)w);}printf("%lld\n",solve()+ans);}return 0;
}

  

 

转载于:https://www.cnblogs.com/zhangchengc919/p/6877991.html

Modules(最小树形图)相关推荐

  1. 最小树形图及其生产方法

    诸位看官,这是我第一次在整篇文章的所有图片里面加水印.小弟写博客的时间不长,就有两篇博客被盗用并未注明原文网址.这一方面使我痛心不已,另一方面迫使我不得不重新考虑一下版权保护问题.小弟不是吝啬鬼,如果 ...

  2. poj3164(最小树形图模版)

    对最小树形图做个小小的总结: 1:清除自环,自环是不可能存在于任何最小树形图中的: 2:求出每个顶点的的最小入边: 3:判断该图是否存在最小树形图,由 1 可以判定,或者以图中顶点v作为根节点遍历该图 ...

  3. HDU6141(最小树形图)

    对最小树形图做个小小的总结: 1:清除自环,自环是不可能存在于任何最小树形图中的: 2:求出每个顶点的的最小入边: 3:判断该图是否存在最小树形图,由 1 可以判定,或者以图中顶点v作为根节点遍历该图 ...

  4. HDU4009(最小树形图)

    对最小树形图做个小小的总结: 1:清除自环,自环是不可能存在于任何最小树形图中的: 2:求出每个顶点的的最小入边: 3:判断该图是否存在最小树形图,由 1 可以判定,或者以图中顶点v作为根节点遍历该图 ...

  5. HDU2121(最小树形图的模版算法题)

    这个道题也是在看了大神之后敲的,我也是刚刚学习这个 ^ _ ^,看来离大佬们的距离还是太远了:以下内容也是在学习大佬讲解的内容之后,根据大佬们的详细讲解中总结出来的! 贪心算法.可以想到每次都找每个点 ...

  6. 模板 - 最小树形图(朱刘算法)

    整理的算法模板合集: ACM模板 目录 给定一个根的有向图的最小树形图 为给定根的树形图 判断无解的方法 给定一个根的有向图的最小树形图 给定包含 n 个结点,m 条有向边的一个图.试求一棵以结点 r ...

  7. 最小树形图复杂度分析

    如果实现得很聪明的话,可以达到找最小入边O(E),找环 O(V),收缩O(E),其中在找环O(V)这里需要一点技巧.这样每次收缩的复杂度是O(E),然后最多会收缩几次呢?由于我们一开始已经拿掉了所有的 ...

  8. TJU 2248. Channel Design 最小树形图

    最小树形图,測模版.... 2248.   Channel Design Time Limit: 1.0 Seconds   Memory Limit: 65536K Total Runs: 2199 ...

  9. hdu4966 最小树形图(最少辅导花费)

    题意:       以一些科目,和辅导班,每个科目最终要求修到某个等级,可以花一定的钱在辅导班把某一科目修到某一等级,进入辅导班的时候会有一个限制,那就是达到他给出的科目和等级限制,比如a b c d ...

最新文章

  1. eclipse下classes文件夹无法发布到tomcat的问题--tomcat发布慢的问题
  2. 数据库SQL语句学习笔记(4)-过滤数据
  3. OPW-00001: Unable to open password-file
  4. iOS中的WiFi与硬件通信
  5. 充分利用Microsoft Planner的6种方法
  6. gc频繁的暂停启动_减少主要GC暂停的频率
  7. web api json_有关使用JSON Web令牌保护无服务器API的速成班
  8. [导入]C# Tips 2 右键单击listBox时弹出右键菜单并选中单击的行
  9. SQL Server 数据库管理常用的SQL和T-SQL语句
  10. angular 模块构建_如何通过11个简单的步骤从头开始构建Angular 8应用
  11. 网页中,列表数据的分页加载、自动加载
  12. hash算法概念和hash加盐法
  13. 7 基于matplotlib的python数据可视化——导入Excel数据制作饼图
  14. 锂电池充电——充电保护电路
  15. 【CV】MobileNet:使用深度可分离卷积实现用于嵌入式设备的 CNN 架构
  16. jQuery使用ajaxSubmit()提交表单以及AjaxSubmit的一些用法
  17. 硕盟HDMI转VGA适配器|HDMI口连接VGA显示器转接头
  18. x64dbg 基本使用技巧
  19. 一张图带你了解仙童半导体
  20. 人生旅程需要自己去把握

热门文章

  1. Objective-c 创建类的使用
  2. 启动DevStack的各项服务
  3. 第八章 PX4-Pixhawk-SDlog解析
  4. CPU流水线的探秘之旅
  5. 找不到 快速启动 ,怎么办
  6. 概率论-2.2 随机变量的数学期望(重点:随机变量X的期望)
  7. c语言扫描图片的坐标,tc 如何在指定坐标处 输出bmp图片??
  8. jquery图片延迟加载 lazy-src
  9. eclipse debug 重新指定源码
  10. RabbitMQ 的安装----windows环境