当前位置: 首页 > news >正文

CF1817B Fish Graph

题目大意

定义了一个鱼图,求是否存在并输出环和两点的边。

题意分析

直接暴力,但是需要加一点点小优化,具体如下:

  1. 环的检测:我们首先需要在图中找到一个环,如果遇到了一个已经访问过的节点,并且该节点不是当前路径的父节点,就形成了一个环。
  2. 检查环的特殊节点:鱼图的要求是环中的某个节点,除了参与环的连接,还必须有两条指向环外的边。
  3. 遍历所有可能的环:环的起始节点可能是任意的,因此我们需要遍历所有节点,尝试从每个节点出发找到一个环,并判断该环是否符合鱼图的要求。同时由于是环,所以这个点必须有被四个点连接
    具体可参考代码及注释理解。

CODE

#include<bits/stdc++.h>
#define wk(x) write(x),putchar(' ')
#define wh(x) write(x),putchar('\n')
#define ll long long
#define ull unsigned long long
#define ri register int
#define INF 2147483647
#define mod 998244353
#define N 50005
#define NO printf("No\n")
#define YES printf("Yes\n")using namespace std;
int n,m,k,jk,ans,sum,num,cnt,tot;
int head[N],dis[N],vis[N],wis[N],f[N];void read(int &x)
{x=0;int ff=1;char ty;ty=getchar();while(!(ty>='0'&&ty<='9')){if(ty=='-') ff=-1;ty=getchar();}while(ty>='0'&&ty<='9')x=(x<<3)+(x<<1)+ty-'0',ty=getchar();x*=ff;return;
}void write(int x){if(x==0){putchar('0');return;}if(x<0){x=-x;putchar('-');}char asd[201];int ip=0;while(x) asd[++ip]=x%10+'0',x/=10;for(int i=ip;i>=1;i--) putchar(asd[i]);return;
}struct lenovo{int to,nxt,val;
}v[N*2];void add(int x,int y)
{v[++cnt].to=y;v[cnt].nxt=head[x];head[x]=cnt;
}void dfs(int x,int y,int z){if(tot) return;f[++num]=x;vis[x]=1;//加入堆中。for(int i=head[x];i&&!tot;i=v[i].nxt){int u=v[i].to;if(u==y) continue;if(u==z&&y!=z){//到达原点。memset(dis,0,sizeof dis);int pop=0;//初始化。for(int j=1;j<=num;j++) dis[f[j]]=1;//标记堆中的元素。for(int j=head[z];j&&pop<2;j=v[j].nxt)if(!dis[v[j].to]) pop++;//取另外两点。if(pop<2) continue;//不符合条件就退出。YES;wh(num+2);//输出答案。for(int j=num;j>1;j--) wk(f[j]),wh(f[j-1]);wk(z),wh(x);pop=0;for(int j=head[z];j&&pop<2;j=v[j].nxt)if(!dis[v[j].to]) wk(z),wh(v[j].to),pop++;tot=1;return;}if(!vis[u]) dfs(u,x,z);//继续遍历。}num--;//弹出堆顶。
}signed main()
{read(jk);while(jk--){read(n),read(m);int x,y;cnt=0;memset(head,0,sizeof head);//记得初始化。memset(wis,0,sizeof wis);for(int i=1;i<=m;i++){read(x),read(y);add(x,y),add(y,x);wis[x]++,wis[y]++;//将出度和入度加一。}tot=0;for(int i=1;i<=n&&!tot;i++){if(wis[i]<4) continue;//一定不可能是。memset(vis,0,sizeof vis);dfs(i,0,i);num=0;//暴力。}if(!tot) NO;//无解的情况。}return 0;
}
http://www.gsyq.cn/news/57418.html

相关文章:

  • 淮安市一对一辅导机构权威排行榜推荐:2026家教机构穿透式测评!
  • 南昌航空大学-软件学院-23207201-吕玉英
  • 从超时到秒杀:三路快排解决数组排序的完整实战与反思
  • 2025年发电机制造厂权威推荐榜单:康姆勒原装发电机组/康姆勒发电机组/全自动柴油发电机组源头厂家精选
  • 2025百元白酒精选推荐指南:十大香型佳酿与纯粮酒挑选策略
  • 部署tendis 集群
  • 完整教程:Flowable工作流引擎:核心表结构概述
  • 2025年刮板蒸发器定做厂家权威推荐榜单:刮板薄膜蒸发器/薄膜蒸发器/刮板式蒸发器装备源头厂家精选
  • 单部电梯调度程序三次迭代设计与实践总结 - 23207231
  • hadoop与mysql的综合应用解决方案
  • 详细介绍:2. 容器常用操作
  • 一条SQL的完整执行过程:小明查询员工信息的完整冒险故事
  • 2025年便宜的化工品国际快递企业权威推荐榜单:药品国际快递/粉末国际快递/专线国际快递服务商精选
  • 杂题选做-6
  • 2025.11.22 考试总结
  • 新赛季临时脱产日记
  • 数据采集第3次作业
  • php openssl, RSA私钥有PKCS#1和PKCS#8,均包含有公钥
  • 2025 年 11 月中空吹塑机厂家推荐排行榜,吹塑机,挤出吹塑机,注射吹塑机,拉伸吹塑机,发泡吹塑机,工具箱吹塑机,瓶子吹塑机公司推荐
  • 2025.11.18 写题记录
  • 2025 最新支架厂家排行榜,出口级品质 + 定制服务 工程采购优选推荐指南热浸锌电缆/可调节角度隧道电缆沟/定制电缆沟/热镀锌电缆沟支架公司推荐
  • 渲染相关(Markdown、ByteMD、ReactMarkdown) - 实践
  • 2025年好吃不贵的餐厅服务权威推荐榜单:宝藏餐厅/好吃的餐厅/口碑好的餐厅服务精选
  • 2025年郑州婚姻心理咨询公司权威推荐榜单:心理健康咨询/家庭心理咨询/心理咨询源头公司精选
  • grub命令行启动linux
  • 2025 最新分频器厂家权威排行榜:EMF 三维电感技术加持,国际协会认证品质之选音响分频器/汽车音响分频器/喇叭分频器公司推荐
  • vue前端面试题——记录一次面试当中遇到的题(10) - 详解
  • HUST食堂解锁记录
  • 2025年浙江餐饮加盟服务商权威推荐榜单:上海加盟鲍鱼/燕之屋燕窝加盟/燕窝加盟服务商精选
  • 数位dp-模版