博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[ZJOI2008]骑士
阅读量:4678 次
发布时间:2019-06-09

本文共 1598 字,大约阅读时间需要 5 分钟。

题解:

显然如果整张图没有环的话,就是一个无脑dp[u][0/1].

那么我们只需要考虑环上的一条边(u,v),分强制不选u和强制不选v两种情况,累计答案是取其中的较大值即可.

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #define MAXN 100001011 #define RG register12 #define LL long long int13 using namespace std;14 const int INF=1e9;15 const int mod=31011;16 struct node{17 int next;18 int to;19 }t[MAXN*2];20 int head[MAXN*2],num=1;21 int n;22 int L[MAXN],R[MAXN],B[MAXN],tot;23 LL dp[MAXN][2],val[MAXN],ans;24 int vis[MAXN*2];25 int fa[MAXN];26 void add(int from,int to)27 {28 t[++num].next=head[from];29 t[num].to=to;30 head[from]=num;31 }32 int find(int x)33 {34 if(fa[x]!=x) fa[x]=find(fa[x]);35 return fa[x];36 }37 void dfs(int u,int f)38 {39 dp[u][1]=val[u];dp[u][0]=0;40 for(int i=head[u];i;i=t[i].next)41 {42 int v=t[i].to;43 if(vis[i] || v==f) continue;44 dfs(v,u);45 dp[u][1]+=dp[v][0];46 dp[u][0]+=max(dp[v][0],dp[v][1]);47 }48 }49 int main()50 {51 freopen("1.in","r",stdin);52 scanf("%d",&n);53 for(int i=1;i<=n;i++) fa[i]=i;54 int x;55 for(int i=1;i<=n;i++){56 scanf("%lld%d",&val[i],&x);add(i,x);add(x,i);57 int f1=find(i),f2=find(x);58 if(f1!=f2) fa[f2]=f1;59 else { L[++tot]=i;R[tot]=x;B[tot]=num-1;}60 }61 for(int i=1;i<=tot;i++)62 {63 vis[B[i]]=vis[B[i]^1]=1;64 dfs(L[i],0);LL ans1=dp[L[i]][0];65 dfs(R[i],0);LL ans2=dp[R[i]][0];66 ans+=max(ans1,ans2);67 vis[B[i]]=vis[B[i]^1]=0;68 }69 printf("%lld\n",ans);70 return 0;71 }

 

转载于:https://www.cnblogs.com/Landlord-greatly/p/8092574.html

你可能感兴趣的文章
Java语言中的正则表达式
查看>>
Java环境变量设置
查看>>
【JBPM4】判断节点decision 方法3 handler
查看>>
filter 过滤器(监听)
查看>>
Linux进程间通信---共享内存
查看>>
Computer Information
查看>>
交换机/路由器上的 S口 F口 E口
查看>>
P1298(矩阵切割)DP
查看>>
wzplayer for delphi demo截图
查看>>
团队第二周:SRS文档
查看>>
Zookeeper的安装与使用:
查看>>
密码策略限制最大与最小长度
查看>>
正则表达式模式
查看>>
使用iframe实现同域跨站提交数据
查看>>
Mouse点击之后,复制GridView控件的数据行
查看>>
ASP.NET开发,从二层至三层,至面向对象 (2)
查看>>
如何查看自己电脑支持OpenGL core版本
查看>>
页面元素定位 XPath 简介
查看>>
[转]loadrunner:系统的平均并发用户数和并发数峰值如何估算
查看>>
Linux下Tomcat重新启动
查看>>