图论:合适的环

4979. 合适的环 - AcWing题库

给定一个 n 个点 m 条边的无向图。

图中不含重边和自环。

请你在图中选出一个由三个点组成的环。

设图中一共有 x 条满足:不在选择的环内,且与选择的环内某个相连。

我们希望通过合理选环,使得 x 的值尽可能小。

请你输出 x 的最小可能值。

输入格式

第一行包含两个整数 n,m。

接下来 m 行,每行包含两个整数 a,b,表示点 a和点 b 之间存在一条无向边。

输出格式

如果存在满足条件的环,则输出 x 的最小可能值。

否则,输出 -1

数据范围

前 33 个测试点满足 3≤n≤10,0≤m≤10。
所有测试点满足 3≤n≤4000,0≤m≤4000,1≤a,b≤n,a≠。

输入样例1:
5 6
1 2
1 3
2 3
2 4
3 4
4 5
输出样例1:
2
样例1解释

给定图中,由三个点组成的环一共有两个,分别为点 1,2,3 组成的环以及点 2,3,4 组成的环。

对于点 1,2,3 组成的环,我们逐个分析每条边是否满足:不在环内,且与环内的某个相连。

  • 边 (1,2) 在环内。
  • 边 (1,3 在环内。
  • 边 (2,3)在环内。
  • 边 (2,4)不在环内,且与点 2 相连。
  • 边 (3,4)不在环内,且与点 3 相连。
  • 边 (4,5)不在环内,但是与点 1,2,3 均不相连。

因此,如果选择点 1,2,3组成的环,则 x 的值为 2。

对于点 2,3,4 组成的环,我们逐个分析每条边是否满足:不在环内,且与环内的某个相连。

  • 边 (1,2) 不在环内,且与点 2 相连。
  • 边 (1,3)不在环内,且与点 3 相连。
  • 边 (2,3)在环内。
  • 边 (2,4) 在环内。
  • 边 (3,4) 在环内。
  • 边 (4,5) 不在环内,且与点 4 相连。

因此,如果选择点 2,3,4组成的环,则 x 的值为 3。

综上,x 的最小可能值为 2。

输入样例2:
7 4
2 1
3 6
5 1
1 7
输出样例2:
-1

图论问题,x 的表示选取的三个点各自和其他点连接成的线的数量之和(每个点排除共同形成环的另外两个点), 通过二维数组 arr[i][j]存储点,表示点 i 和点 j 之间存在一条线,结构体 s[i]{a,b} 存储线表示 第 i 条线由点 a 和 点 b 相连,mp[i] 存储第  i 个点和几个点相连, 根据题意,外循环遍历线1-m,可通过 s 得到连接线的两个点 a,b,内循环遍历第三个点 c,通过 arr 判断三个点之间是否都存在线,形成环,然后通过 mp 得到 x,因为 mp 存储的点 i 连接的其他所有点数量,但 x 求的是形成环的三个点分别排除与另外两点之间的线的情况,所以三个点每个点排除两条,三个点排除 6 条,一共就是 6 条,就是 -6.

AC code:

#include<bits/stdc++.h>
using namespace std;
int arr[4010][4010];
int n, m;
struct s {int a, b;
} s[4010];
unordered_map<int, int> mp;
int main() {cin >> n >> m;for (int i = 1; i <= m; i++) {int a, b;cin >> a >> b;s[i] = {a, b};arr[a][b]++;arr[b][a]++;mp[a]++, mp[b]++;}int ans = 2e9;for (int i = 1; i <= m; i++) {int a = s[i].a, b = s[i].b;
//		cout << a << " " << b<<endl;for (int c = 1; c <= n; c++) {if (arr[a][c] && arr[b][c]) {int res = mp[a] + mp[b] + mp[c] - 6;ans = min(res, ans);}}}if (ans != 2e9) {cout << ans;} else cout << -1;}

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

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

相关文章

创新方案|经济下行周期下企业避免杀价内卷侵蚀利润亟需5种创新定价策略

随着通胀持续、全球经济衰退逆风让消费者谨慎支出&#xff0c;绝大多数企业都担心如何刺激购买且保持利润率。在本研究认为&#xff0c;公司不应该简单地调整价格&#xff0c;而应该创造性地借鉴其他行业定价打法&#xff0c;通过创新定价选项的组合&#xff0c;增加向客户计价…

LLM之RAG实战(二十二)| LlamaIndex高级检索(一)构建完整基本RAG框架(包括RAG评估)

在RAG&#xff08;retrieval Augmented Generation&#xff0c;检索增强生成&#xff09;系统中&#xff0c;检索到文本的质量对大型语言模型生成响应的质量是非常重要的。检索到的与回答用户查询相关的文本质量越高&#xff0c;你的答案就越有根据和相关性&#xff0c;也更容易…

QMUI_Android:提升Android开发效率与质量的利器

QMUI_Android&#xff1a;提升Android开发效率与质量的利器 在Android应用开发过程中&#xff0c;开发者常常面临着重复编写基础组件和处理兼容性问题的挑战&#xff0c;这不仅耗费时间&#xff0c;也降低了开发效率。为了解决这一问题&#xff0c;Tencent推出了QMUI_Android框…

突破编程_C++_面试(基础知识(7))

面试题16&#xff1a;什么是引用&#xff0c;它与指针有什么区别 引用是变量的别名。对于变量名而言&#xff0c;C 实际上对其是不作存储的&#xff0c;在汇编以后不会出现变量名&#xff0c;变量名作用只是用于方便编译器成汇编代码&#xff0c;是给编译器看的&#xff0c;同…

LeetCode、17. 电话号码的字母组合【中等,dfs回溯】

文章目录 前言LeetCode、17. 电话号码的字母组合【中等&#xff0c;dfs回溯】题目与类型思路递归回溯优化&#xff1a;StringBuilder来回溯补充代码&#xff1a;2024.1.31&#xff08;简化&#xff09; 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博…

C++类和对象:运算符重载

左移运算符重载&#xff1a; class Person {friend ostream& operator<<(ostream& cout, Person& p); public:Person();~Person();static int m_age;void showperson() const{cout << this->m << endl;}int m_A;int m_B;Person operator(Per…

docker部署docker运维工具

简介 主要功能:管理容器,管理镜像,管理容器网络 安装 拉取镜像 docker pull joinsunsoft/docker.ui:1.0.1 启动容器 docker run -d --name docker.ui --restart always -v /var/run/docker.sock:/var/run/docker.sock -p 10039:8999 joinsunsoft/docker.ui:1.0.1 使用 打…

基于鲸鱼优化的knn分类特征选择算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 鲸鱼优化算法&#xff08;WOA&#xff09; 4.1.1 包围猎物 4.1.2 螺旋式搜索 4.1.3 更新策略 4.2 K近邻&#xff08;KNN&#xff09;分类器 4.3 基于WOA的KNN分类特征选择算法 5.完…

将Juniper虚拟防火墙vSRX导入EVE-NG

正文共&#xff1a;555 字 8 图&#xff0c;预估阅读时间&#xff1a;1 分钟 前面我们已经简单介绍了如何导入vSRX的VMware镜像到Workstation&#xff08;Juniper虚拟防火墙vSRX部署初体验&#xff09;&#xff0c;如何导入ESXi并简单操作WEB配置&#xff08;将Juniper虚拟防火…

2.2 反序数

描述 设N是一个四位数&#xff0c;它的9倍恰好是其反序数&#xff08;例如&#xff1a;1234的反序数是4321&#xff09; 求N的值 int main() {for(int i 1;i < 10;i)for(int j 0;j < 10;j)for(int k 0;k < 10;k)for(int l 1;l < 10;l){if((i*1000j*100k*10l)*…

【计算机网络基础篇】学习笔记系列之一《TCP/IP 网络模型》

文章目录 1、问题提出2&#xff0c;网络协议是分层的3&#xff0c;应用层4&#xff0c;传输层5&#xff0c;网络层6&#xff0c;网络接口层7&#xff0c;总结 1、问题提出 为什么要有 TCP/IP 网络模型&#xff1f; 不同设备上的进程间通信需要通过一套通用的网络协议进行网络通…

第二证券:北向资金连续第五日净流入,茅台、工行、五粮液等获加仓

沪指低收险守2700点关口&#xff0c;北向资金接连5日净流入。 2月5日&#xff0c;A股三大股指团体低开&#xff0c;三大股指均创阶段性新低后反弹&#xff0c;创业板指午后首先翻红且一度涨超3%&#xff0c;深成指和沪指也相继转涨。但商场做多情绪欠安&#xff0c;沪深股指重…

opensatck中windows虚拟机CPU核数显示异常问题处理

文章目录 一、问题描述二、元数据信息三、以32核的实例模版为例3.1 单槽位32核3.2 双槽位32核 总结 一、问题描述 openstack创建windows虚拟机的时候&#xff0c;使用普通的实例模版会出现CPU数量和实例模版不一致的问题。需要定制元数据才可以正常显示。 帖子&#xff1a;htt…

米贸搜|关于Facebook广告受限:在这些情况下,Meta会限制广告主的广告能力!

如果你被限制了投放广告&#xff0c;那么你会在Facebook上收到通知。 除了审查广告之外&#xff0c;Meta还监控和调查广告主在Meta技术上的行为&#xff0c;在某些情况下&#xff0c;Meta可能会对广告主施加限制&#xff0c;限制广告主的广告能力&#xff0c;这些限制旨在帮助保…

ChatGPT高效提问—prompt基础

ChatGPT高效提问—prompt基础 ​ 设计一个好的prompt对于获取理想的生成结果至关重要。通过选择合适的关键词、提供明确的上下文、设置特定的约束条件&#xff0c;可以引导模型生成符合预期的回复。例如&#xff0c;在对话中&#xff0c;可以使用明确的问题或陈述引导模型生成…

macbookpro和macbookair的区别?cleanmymac 怎么清理mac空间

苹果mac air和pro区别有&#xff1a;1、air采用了轻薄的设计&#xff0c;重量相对较轻&#xff0c;便于携带&#xff0c;而pro更加注重性能&#xff0c;所以比较重&#xff1b;2、air通常搭载较低功耗的处理器内存和存储容量相对较小&#xff0c;而pro配备了更强大的处理器、更…

基于Vue2用keydown、keyup事件实现长按键盘任意键(或组合键)3秒触发自定义事件(以F1键为例)

核心代码 <template></template> <script> export default {created() {//监听长按快捷键addEventListener("keydown", this.keydown);addEventListener("keyup", this.keyup);},destroyed(d) {//移除长按快捷键removeEventListener(&…

外汇天眼:外汇中的“直接套汇”是指什么?

外汇中的直接套汇又称地点套汇和两角套汇&#xff0c;由于两间汇率高低不同&#xff0c;同时在两个市场上买贱卖贵&#xff0c;从中赚取汇率差额。 例如&#xff1a;英镑的价格在伦敦较贵&#xff0c;或者说英镑在纽约就较便宜&#xff0c;而美元的价值在伦敦较便宜&#xff0c…

硬核:C++实现一个简单的图形用户界面(GUI),包括按钮、文本框和标签等控件

使用Qt库实现简单GUI的示例&#xff1a; #include <QtWidgets>int main(int argc, char** argv) {QApplication app(argc, argv);// 创建一个窗口QWidget window;// 创建一个标签控件QLabel* label new QLabel("Hello World", &window);// 创建一个文本框…

计算机毕业设计 | SpringBoot大型旅游网站 旅行后台管理系统(附源码)

1&#xff0c; 概述 1.1 项目背景 随着互联网技术的快速发展和普及&#xff0c;旅游行业逐渐转向线上&#xff0c;越来越多的游客选择在线预订旅游产品。传统的线下旅行社模式已不能满足市场需求&#xff0c;因此&#xff0c;开发一个高效、便捷的旅游网站成为行业的迫切需求…