把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

题解 P7763 [COCI2016-2017#5] Ronald

洛谷

题意

显然。

分析

对于此题,我们可以从最终状态反推。

最终状态是什么,就是我们所有的节点两两链接(下命名为全联通),而最后一步的前一步的状态是什么呢,这明显是确定的,就是一个节点单独,其他节点仍然全联通,再操作一个节点呢,不难发现,现在是两个节点全联通,剩下的全联通。

以此类推,不难证明,我们回推的图必然是两个全联通图或者是本身就是满足。

由此得到结论,如果所有的节点与其边能够构成两个或一个全联通,那么就输出 DA。

怎么判断是否全联通呢?我们只用判断边数与点数的关系即可。

siz×(siz1)=edge×2,所有节点两两联通,即为全联通。

至于连接的过程,我们用并查集维护即可。

for(int i=1; i<=m; ++i) {
int u=read(),v=read();
u=find(u),v=find(v);
if(u==v) edge[u]++;
else {
fa[v]=u;
siz[u]+=siz[v];
edge[u]+=edge[v]+1;
}
}
int cnt=0,flag=0;
for(int i=1; i<=n; ++i) {
if(fa[i]==i) {
++cnt;
if((!check(i))||cnt>2) {
cout<<"NE";
return 0;
}
}
}
cout<<"DA";
posted @   djh0314  阅读(22)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示