[luogu3387]缩点+DAGdp板子
来源:互联网 发布:域名管理系统dns 编辑:程序博客网 时间:2024/06/07 02:44
题目:
我是超链接
题解:
哇都说了是板子。。
一开始还在想DAG如果有什么乱七八糟的环啊要不要用类似拓扑的方法。。
后来一想——–都缩点了怎么会有环?
可以用DAGdp记忆化
代码:
#include <cstdio>#include <iostream>#include <cstring>#define N 10005#define M 100005#define INF 1e9using namespace std;int tot,nxt[M],point[N],v[M],low[N],Dfn[N],nn,cnt,a[N],c[N],x[M],y[M];int tot1,nxt1[M],point1[N],v1[M],f[N],out[N],stack[N],num,belong[N],ans;bool vis[N];void addline(int x,int y){++tot; nxt[tot]=point[x]; point[x]=tot; v[tot]=y;}void addline1(int x,int y){++tot1; nxt1[tot1]=point1[x]; point1[x]=tot1; v1[tot1]=y;} void tarjan(int x){ Dfn[x]=low[x]=++nn; vis[x]=1; stack[++cnt]=x; for (int i=point[x];i;i=nxt[i]) if (!Dfn[v[i]]) { tarjan(v[i]); low[x]=min(low[x],low[v[i]]); } else if (vis[v[i]]) low[x]=min(low[x],Dfn[v[i]]); if (low[x]==Dfn[x]) { num++; while (stack[cnt]!=x) { c[num]+=a[stack[cnt]]; belong[stack[cnt]]=num; vis[stack[cnt]]=0; cnt--; } c[num]+=a[stack[cnt]]; belong[stack[cnt]]=num; vis[stack[cnt]]=0; cnt--; }}void dp(int x,int fa){ if (vis[x]) return; f[x]=c[x];vis[x]=1;int maxx=0; for (int i=point1[x];i;i=nxt1[i]) if (v1[i]!=fa) { dp(v1[i],x); maxx=max(maxx,f[v1[i]]); } f[x]+=maxx;}int main(){ int n,m,i; scanf("%d%d",&n,&m); for (i=1;i<=n;i++) scanf("%d",&a[i]); for (i=1;i<=m;i++) { scanf("%d%d",&x[i],&y[i]); addline(x[i],y[i]); } for (i=1;i<=n;i++) if (!Dfn[i]) tarjan(i); for (i=1;i<=m;i++) if (belong[x[i]]!=belong[y[i]]) addline1(belong[x[i]],belong[y[i]]); ans=-INF; memset(vis,0,sizeof(vis)); for (i=1;i<=num;i++) if (!vis[i]) dp(i,0),ans=max(ans,f[i]); printf("%d",ans);}
阅读全文
1 0
- [luogu3387]缩点+DAGdp板子
- luogu3387 缩点
- Uva-11324 The Largest Clique(强连通分量缩点+DAGdp)
- NOIP模拟题 2016.9.24 [贪心] [有依赖的背包问题] [图论] [spfa或tarjan缩点+DAGdp]
- 板子
- 板子
- 树上路径统计——点分治の板子
- NYOJ 16 矩形嵌套 [DAGdp或spfa]
- 割点 洛谷P3388 【模板】割点(割顶) 学习板子
- 强连通分量和桥和割点——Tarjanの板子
- UVA 1025 A Spy in the Metro [动态规划] [DAGdp]
- 测试板子
- 板子总结
- 入手板子
- 新板子
- Ivus 板子
- dinic 板子
- manacher板子
- 209. Minimum Size Subarray Sum解题报告
- Noip 2016 蚯蚓
- a2dp
- 循环队列的实现
- Codeforces Round #311 (Div. 2) D. Vitaly and Cycle 图论 二分图
- [luogu3387]缩点+DAGdp板子
- Allegro——原理图软件Design Entry CIS问题解决
- MySql常用函数总结
- 各类消息队列(MQ)选择对比
- python可视化——使用pygal模拟掷骰子
- 打印排序结果
- 山世光老师的FaceAlignment特征检测部分
- 现代OpenGL+Qt学习笔记之十一:使用halfway向量提高光照计算效率
- 我的博客之路