2021牛客暑期多校训练营6 J-Defend Your Country(无向图点双+思维)

无向图联通分量

点u是割点,当且仅当

  • 特判树根:u为树根,且u有多于1棵子树
  • u不为树根,在递归树上u存在子节点v,满足:dfnu≤lowv\text{dfn}_u\leq \text{low}_vdfnulowv

在这里插入图片描述
如上图,v想走到u的组先必须经过u,那么u一定是割点。


(u,v)(u,v)(u,v)是割边,当且仅当边(u,v)(u,v)(u,v)为树边,且满足dfnu<lowv⇔dfnv=lowv\text{dfn}_u< \text{low}_v\Leftrightarrow \text{dfn}_v= \text{low}_vdfnu<lowvdfnv=lowv

  • 从v出发无法到达u以及u的祖先
  • 非树边不可能是割边,重边不可能是割边
    在这里插入图片描述

J-Defend Your Country

Zechariah_2001题解
Alkaid~题解

下面结论详细证明可以参考上面两位大佬的题解

结论

  • 对于nnn是偶数的情况,显然不需要删边。

  • 对于nnn是奇数的情况,最优方案一定是只删除一个点连接的所有边,只有这个点的贡献会变负。删去非割点显然只用删一个,删掉割点必须保证删除后连通块点数都是偶数。

Code

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
template <class T=int> T rd()
{T res=0;T fg=1;char ch=getchar();while(!isdigit(ch)) {if(ch=='-') fg=-1;ch=getchar();}while( isdigit(ch)) res=(res<<1)+(res<<3)+(ch^48),ch=getchar();return res*fg;
}
const int N=1000010;
int h[N],e[N<<2],ne[N<<2],idx;
void add(int a,int b){e[idx]=b,ne[idx]=h[a],h[a]=idx++;}
int n,m,a[N];
ll sum;
int dfn[N],low[N],sz[N],timestamp;
bool cut[N],no[N];
void tarjan(int u,int fa)
{dfn[u]=low[u]=++timestamp;sz[u]=1;int chd=0;for(int i=h[u];i!=-1;i=ne[i]){int v=e[i];if(!dfn[v]){tarjan(v,u);sz[u]+=sz[v];low[u]=min(low[u],low[v]);if(low[v]>=dfn[u]) {if(fa) cut[u]=1;// 根节点特判,v最多走到u走不到u上面去if(sz[v]&1) no[u]=1;}if(!fa) ++chd;// 特判根节点}else if(v!=fa) low[u]=min(low[u],dfn[v]);}if(chd>1) cut[u]=1;
}
void init()
{idx=0;sum=0;timestamp=0;for(int i=1;i<=n;i++) h[i]=-1;for(int i=1;i<=n;i++) dfn[i]=low[i]=sz[i]=0;for(int i=1;i<=n;i++) no[i]=cut[i]=0;
}
int main()
{int Tc=rd();while(Tc--){n=rd(),m=rd();init();for(int i=1;i<=n;i++) a[i]=rd(),sum+=a[i];while(m--){int u=rd(),v=rd();add(u,v),add(v,u);}if(n&1) {tarjan(1,0);int mn=0x3f3f3f3f;for(int i=1;i<=n;i++)if(!cut[i]||!no[i]) mn=min(mn,a[i]);printf("%lld\n",sum-2*mn);}else printf("%lld\n",sum);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不止代码:循环比赛(分治)

循环比赛日程表&#xff08;match&#xff09; 【问题描述】 解析 dfs或分治 分治可以不断递归4个小正方形 左上右下为前一半&#xff0c;左下右上后一半 dfs就很无脑了 代码 #include<cstdio> #include<cstring> #include<algorithm> #include<cmath…

前瞻科技,引领未来!Microsoft Connect(); 2018即将重磅来袭!

怎么用一句话点燃全球的开发者&#xff1f;——Microsoft Connect(); 2018即将重磅来袭&#xff01;每一个观点都能引发科技狂潮&#xff0c;每一项技术都将提速技术进程&#xff0c;由微软举办的 Microsoft Connect(); 2018 即将在太平洋时间12月4日8:30拉开帷幕&#xff01;大…

P5048-[Ynoi2019 模拟赛]Yuno loves sqrt technology III【分块】

正题 题目链接:https://www.luogu.com.cn/problem/P5048 题目大意 就是这个 【QA】区间众数&#xff0c;但空间很小 长度为nnn的序列&#xff0c;要求支持查找区间众数出现次数。 强制在线 1≤n,m≤51051\leq n,m\leq 5\times 10^51≤n,m≤5105 解题思路 空间小就不能用蒲公…

通俗易懂,C#如何安全、高效地玩转任何种类的内存之Span的脾气秉性(二)

前言读完上篇《通俗易懂&#xff0c;C#如何安全、高效地玩转任何种类的内存之Span(一)》&#xff0c;相信大家对span的本质应该非常清楚了。含着金钥匙出生的它&#xff0c;从小就被寄予厚望要成为.NET下编写高性能应用程序的重要积木&#xff0c;而且很多老前辈为了接纳它&…

4.6模拟 宽度优先搜索

总结 bfs除了代码能力没有任何算法。。。 有些细节是值得注意的 T1 面积(area) bfs被我写成了dfs。。。 &#xff08;不过我觉得这么写挺不戳&#xff09; 核心思路就是用一个flag记录当前跑得这些点有没有效 恶心之处在于本题默认mn10&#xff01;&#xff01;&#xff01;…

微软开发者大会:VS 2019 Preview 发布;Windows UX 主要技术开源

美国当地时间12月4日&#xff0c;微软正式举行 Microsoft Connect(); 2018 开发者大会&#xff0c;本次大会的 slogan 是"Build the apps of tomorrow, today."。在今年的大会上&#xff0c;看得出来微软不是憋了一个 —— 而是憋了一波大招。不妨先看一下这次大会微…

asp.net core sdk runtime 镜像[已更新至2.2.0]

在官方镜像的脚本上&#xff0c;增加了System.Drawing相关的依赖库以北京时间为默认的时间2.2.0Windows SDK地址:官方: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/2.2.100/dotnet-sdk-2.2.100-win-x64.exe自己的加速地址: http://file.niusys.com/dotnet-sdk-2.2.10…

[翻译] 使用 Visual Studio 2019 来提高每个开发人员的工作效率

原文: Making every developer more productive with Visual Studio 2019今天&#xff0c;在 Microsoft Connect(); 2018 的主题演讲中&#xff0c;Scott Guthrie 宣布推出 Visual Studio 2019 Preview 1。这是 Visual Studio 下一个主要版本的首次预览。在本预览版中&#xff…

大赛:2021省选 总结

文章目录概要想清楚再敲代码&#xff01;&#xff01;&#xff01;仔细审题&#xff01;&#xff01;&#xff01;Day1T1 卡牌游戏T2 矩阵游戏T3 图函数day 2T1 宝石T2 滚榜T3 支配概要 想清楚再敲代码&#xff01;&#xff01;&#xff01; 仔细审题&#xff01;&#xff01…

ybtoj祭坛

文章目录冲啊&#xff01;&#xff08;100题祭&#xff09;125题祭140题祭首次登顶&唯一AC150题祭160题祭170题祭冲啊&#xff01;&#xff08;100题祭&#xff09; 2021.4.11 刚好100道 其实是前几天到的&#xff08;忘了是哪一道了。。。&#xff09; 今天写省选题解开了…

C++ __gnu_pbds(hash,可并堆,平衡树)

pb_ds 是GNU-C自带的一个C的扩展库&#xff0c;其中实现了很多数据结构&#xff0c;比STL里面的功能更强大 #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/tree_policy.hpp> // 用tree #include<ext/pb_ds/hash_policy.hpp> // 用hash #…

理解至上:二叉堆与优先队列详细用法

文章目录二叉堆概述插入代码访问代码完整代码优先队列&#xff1a;priority_queue基本用法小根堆的声明&#xff1a;结构体注意Thanks for reading&#xff01;二叉堆 概述 为什么不用pq呢 算比较简单的数据结构了 它可以用log的时间复杂度插入元素和访问&#xff08;取出&am…

ASP.NET Core 搭配 Nginx 的真实IP问题

一.前言Nginx&#xff08;Engine X&#xff09;是一个高性能HTTP和反向代理服务&#xff0c;是由俄罗斯人伊戈尔赛索耶夫为访问量第二的Rambler.ru站点&#xff08;俄文&#xff1a;Рамблер&#xff09;开发的&#xff0c;第一个公开版本0.1.0发布于2004年10月4日。 如果…

不止代码:保留道路(ybtoj 最小生成树)

文章目录题目描述解析代码thanks for reading!题目描述 解析 其实就是修建道路 我一开始只能想到枚举g去跑最小生成树 是m^2的算法&#xff08;50pts&#xff09; 但是其实每次加入的边只有一条 而且之前都不在最小生成树上的边以后也肯定不会在 所以可以建一个新的边的集合存…

不止代码:路径数量(ybtoj-最小生成树)

文章目录题目描述解析代码题目描述 解析 乍一看&#xff1a;是个水题啊&#xff01; 显然如果途径存在强连通的点&#xff0c;路径就会变为正无穷 所以缩点加拓扑dp以及一些特判应该就可以解决了&#xff01; 一交&#xff1a;40分。。。 然后就开始拆东墙补西墙的debug。。。…

重磅!!!微软发布.NET Core 2.2

我们很高兴地宣布发布.NET Core 2.2。它包括对运行时的诊断改进&#xff0c;对ARM32 for Windows和Azure Active Directory for SQL Client的支持。此版本中最大的改进是在ASP.NET Core中。ASP.NET Core 2.2和Entity Framework Core 2.2。您可以在Windows&#xff0c;macOS和Li…

[翻译] ASP.NET Core 2.2 正式版发布

本文为翻译&#xff0c;原文地址&#xff1a;https://blogs.msdn.microsoft.com/webdev/2018/12/04/asp-net-core-2-2-available-today/我&#xff08;文章作者&#xff09;很高兴地宣布ASP.NET Core 2.2现在作为.NET Core 2.2的一部分提供&#xff01;怎么获取它您可以从 .NET…

理解至上:数位dp(ybtoj-B数计数)

文章目录简要题目描述解析dp定义:试填法代码thanks for reading&#xff01;简要 数位dp&#xff0c;天下第一 最重要的应该有两个&#xff1a; 1.状态转移式的确定 2.试填法不断往后模拟 &#xff08;至今是唯一一道数位dp&#xff0c;究竟重要的是啥我其实也没有太多经验 &am…

2021“MINIEYE杯”中国大学生算法设计超级联赛(10)Pty loves string(Border+二维数点)

Pty loves string 建立Border树后&#xff0c;发现可以转化成两个子树中相同点的数量&#xff0c;时间戳转化为连续的区间后相当于有两个数组&#xff0c;每次给两个区间&#xff0c;问区间相同点权的数目。 第一个数组作为区间&#xff0c;第二个数组作为权值。将第一个数组建…

微软推出了Cloud Native Application Bundles和开源ONNX Runtime

微软的Microsoft Connect(); 2018年的开发者大会 对Azure和IoT Edge服务进行了大量更新; Windows Presentation Foundation&#xff0c;Windows Forms和Windows UI XAML Library的开源 以及.NET 基金会会员模型的扩展。但那些只是冰山一角。微软还联合Docker发布了Cloud Native…