Link

一眼题。

缩点然后dp。

注意一下计算一条边经过无限次可以获得多少价值这个东西要用到平方和公式。

\(\sum\limits_{i=1}^ni^2=\frac{i(i+1)(2i+1)}6\)

#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define pi pair<int,int>
using namespace std;
int read(){int x;scanf("%d",&x);return x;}
int min(int a,int b){return a<b? a:b;}
ll max(ll a,ll b){return a>b? a:b;}
const int N=1000007;
vector<int>G[N];vector<pi>E[N];
int Time,cnt,dfn[N],low[N],bel[N],stk[N],top,vis[N];ll val[N],f[N];
struct edge{int u,v,w;}e[N];
ll cal(int x){int n=(sqrt(1+x*8)-1)/2;return (n+1ll)*x-1ll*n*(n+1)*(n+2)/6;}
void tarjan(int u)
{
dfn[u]=low[u]=++Time,vis[stk[++top]=u]=1;
for(int v:G[u])
if(!dfn[v]) tarjan(v),low[u]=min(low[u],low[v]);
else if(vis[v]) low[u]=min(low[u],dfn[v]);
if(low[u]==dfn[u]) for(++cnt;stk[top+1]^u;--top) bel[stk[top]]=cnt,vis[stk[top]]=0;
}
int main()
{
int n=read(),m=read(),s;
for(int i=1;i<=m;++i) e[i]=(edge){read(),read(),read()},G[e[i].u].pb(e[i].v);
tarjan(s=read());
for(int i=1;i<=m;++i)
if(bel[e[i].u]&&bel[e[i].v])
if(bel[e[i].u]==bel[e[i].v]) val[bel[e[i].u]]+=cal(e[i].w);
else E[bel[e[i].u]].pb(pi(bel[e[i].v],e[i].w));
for(int u=1;u<=cnt;++u)
{
for(auto[v,w]:E[u]) f[u]=max(f[u],f[v]+w);
f[u]+=val[u];
}
printf("%lld",f[bel[s]]);
}

最新文章

  1. 使用自定义签名的https的ssl安全问题解决和metro的webservice调用
  2. s2sh框架搭建(基于spring aop)
  3. 精品资源:40个实用的 PSD 贴纸模板《下篇》
  4. static成员函数
  5. LeetCode - 41. First Missing Positive
  6. json、javaBean、xml互转的几种工具介绍 (转载)
  7. MongoDb查询日期范围
  8. Boost简介
  9. javascript的setTimeout()用法总结,js的setTimeout()方法
  10. uboot环境变量分析
  11. 转:内核中的内存申请:kmalloc、vmalloc、kzalloc、kcalloc、get_free_pages
  12. request.getParameter()与request.setAttribute()的区别 (转载)
  13. JVM菜鸟进阶高手之路十三(等你来战!!!)
  14. 一种转换Ipv6地址的方法
  15. 【原创+整理】简述何为调用约定,函数导出名以及extern C
  16. babelrc 中的 presets 字段(env, react)和 plugins 字段(dynamic-import-webpack, transform-object-rest-spread, ...)
  17. ES系列十六、集群配置和维护管理
  18. QT学习之菜单栏与工具栏
  19. HDFS分布式文件系统
  20. 【令人振奋】【转】微软潘正磊谈DevOps、Visual Studio 2013新功能、.NET未来

热门文章

  1. Cobbler自动装机
  2. luogu 2993 [FJOI2014]最短路径树问题 Dijkstra+点分治
  3. 洛谷 P1546 最短网络 Agri-Net x
  4. 序列模式挖掘--SPADE算法
  5. ZeroMQ+QT 字符串收发
  6. 12.Python数值类型(整形、浮点型和复数)及其用法
  7. Oracle用函数或PIVOT实现行转列
  8. Ubuntu 16.04配置SSL免费证书
  9. MongoDB4和MysSQL5.7的读/写和事务处理速度简单对比
  10. Springboot集成Swagger操作步骤