D. George and Interesting Graph(最大匹配)

news2025/1/18 0:18:33

Problem - 387D - Codeforces

乔治喜欢图表。最重要的是,他喜欢有趣的图。我们将假设一个有向图是有趣的,如果它符合以下标准。

该图不包含任何多弧。
有一个顶点v(我们称她为中心),这样对于图形u的任何顶点,图形都包含弧(u,v)和(v,u)。请注意,该图还包含循环(v,v)。
除中心点外,所有顶点的outegree等于2,除中心点外,所有顶点的indegree等于2。顶点u的outegree是指从u出去的弧数,顶点u的indegree是指从u进去的弧数。
然而,并不是所有事情都那么简单。乔治得到了一个有n个顶点和m条弧的有向图作为礼物。该图没有任何多弧。由于乔治喜欢有趣的图形,他想稍微改变一下所赠送的图形,把它变成一个有趣的图形。在一次改动中,他可以从图中删除一个任意的现有弧,或者在图中增加一个任意的弧。

乔治想知道:为了从他得到的图形中获得一个有趣的图形,他需要的最少改动次数是多少?请帮助乔治,找出问题的答案。

输入
第一行包含两个隔开空间的整数n和m(2≤n≤500,1≤m≤1000)--呈现的图形中顶点和弧的数量。

接下来的每一行都包含两个空间分隔的整数ai, bi (1 ≤ ai, bi ≤ n) --图的弧的描述。对(ai,bi)意味着该图包含一个从顶点号ai到顶点号bi的弧。可以保证所呈现的图形不包含多条弧。

假设图中的顶点编号为1到n。

输出
打印一个整数 - 乔治问题的答案。

例子
inputCopy
3 7
1 1
2 2
3 1
1 3
3 2
2 3
3 3
输出拷贝
0
输入复制
3 6
1 1
2 2
3 1
3 2
2 3
3 3
输出拷贝
1
输入复制
3 1
2 2
输出拷贝
6
备注
关于有向图的更多信息,请访问:http://en.wikipedia.org/wiki/Directed_graph

在第一个例子中,该图已经很有趣了,它的中心是顶点3。

题解:

我们看到n有500,直接枚举每个点为中心点,分开计算,由于去掉中心点后,我们就成了剩下n - 1个点直间出度与入度都变为1,我们首先默认构造n - 1个点需要依次连接,首尾连接,所以是n - 1次,然后看其中一个点是否需其他点有连接,删除

然后找最大匹配,每找到一个,cnt -= 2,相当于有一个出度与入度是不需要增加和删除的

#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
#include<vector>
#include<map>
#include<cstring>
#include<cmath>
#include<set>
using namespace std;
#define int long long
typedef pair<int,int> PII;
int n,m;
int a[505][505];
int vis[505];
int link[505];
int ans = 1e9;
int ask(int x)
{
	int cnt = 0;
	for(int i  = 1;i <= n;i++)
	{
		if(!a[i][x])
		{
			cnt ++;
		}
		if(i == x)
		continue;
		if(!a[x][i])
		cnt++;
	}
	return cnt;
}
int dfs(int x,int y)
{
	for(int i = 1;i <= n;i++)
	{
		if(vis[i]||!a[x][i]||i == y)
		{
			continue;
		}
		vis[i] = 1;
		if(!link[i]||dfs(link[i],y))
		{
			link[i] = x;
			return 1;
		}
	}
	return 0;
}
int check(int x)
{
	memset(link,0,sizeof link);
	int cnt = 0;
	for(int i = 1;i <= n;i++)
	{
		if(i == x)
		continue;
		memset(vis,0,sizeof vis);
		dfs(i,x);
		cnt ++;
		for(int j = 1;j <= n;j++)
		{
			if(j == x)
			continue;
			if(a[i][j])
			cnt++;
		}
	}
	for(int i = 1;i <= n;i++)
	{
		if(i == x)
		continue;
		if(link[i])
		cnt -= 2;
	}
	return cnt;
}
void solve()
{
	cin >> n >> m;
	for(int i = 1;i <= m;i++)
	{
		int x,y;
		cin >> x >> y;
		a[x][y] = 1;
	} 
	for(int i = 1;i <= n;i++)
	{
		ans = min(ans,ask(i) + check(i));
	}
	cout << ans;
}
//1 2 3 4 5
//
signed main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);
	int t = 1;
//	cin >> t;
    while(t--)
	{

		solve();
	} 
}
//5
//2 4 6 8 10 7 9 5 3 1
//1 3 5 7 9 6 8 4 2
//2 4 1 3

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

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

相关文章

信息网络传播视听节目服务单位的设立与经营

一、行业准入 &#xff08;一&#xff09;网络视听业务准入范围 利用公共互联网&#xff08;含移动互联网&#xff09;向计算机、手机用户提供视听节目服务&#xff08;不含交互式网络电视&#xff08;IPTV&#xff09;、互联网电视、专网手机电视业务&#xff09;业务的&…

几个小设置让 mac 更好用

今天在 youtube 上看到一个视频[1]&#xff0c;讲新 mac 到手后一定要做的几个设置&#xff0c;有几个之前我不知道的小设置&#xff0c;非常好用&#xff0c;看完马上就用上了。一些常用的就不列了&#xff0c;比如说设置点按、三指拖拽&#xff0c;不知道的可以去搜索了解&am…

【Python数据可视化】使用geoplotlib绘制地理空间数据

geoplotlib前言一、安装geoplotlib包二、读取csv数据使用1.点密度可视化2.直方图3. Voronoi图总结前言 ❤️❤️希望大家能多多点赞。❤️❤️ 需要数据集的可以评论。 Geoplotlib 是地理空间数据可视化的开源Python库&#xff0c;包含了大量的地理空间可视化操作&#xff0c…

131. 分割回文串

131. 分割回文串 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1&#xff1a; 输入&#xff1a;s “aab” 输出&#xff1a;[[“a”,“a”,“b”]…

青少年等级考试【Python通关干货】(二级)

青少年等级考试【Python通关干货】(二级)1.列表类型的概念 2.序列的通用操作 3.可变序列及列表的通用操作 4.列表的特有操作 5.元组类型的概念与操作

激活学习:一种挑战反向传播的生物启发算法

激活学习(activation learning)是一种生物启发的简单本地学习规则构建的前向无监督通用模型&#xff0c;它的核心是构建多层神经网络使得网络输出激活强度能反映输入的相对概率大小。并且&#xff0c;它在一些任务上达到并超过反向传播的表现。激活学习的概念由山东大学教授周洪…

C++11标准模板(STL)- 算法(std::adjacent_difference)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 计算范围内各相邻元素之间…

MyBatis 配置文件解析

MyBatis 的核心配置文件是 mybatis-config.xml。注意配置文件中节点的顺序有要求&#xff0c;必须按照下面的顺序填写节点信息&#xff1a; (properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,reflectorFactory,plugins,environments,databa…

Odoo丨如何在Odoo中修改HTML编辑工具栏?

文章目录一、前言二、渲染原理三、修改方法一、前言 在odoo中&#xff0c;当我们在页面上使用Html类型或者html的小组件的时候&#xff0c;页面渲染成如下格式&#xff0c;供用户编辑⬇ 上方有一些工具栏如背景颜色&#xff0c;字体颜色&#xff0c;字体大小&#xff0c;插入表…

【Linux04-进程概念下】不愧是操作系统,优美的设计!

前言 上期的分享让我们知道进程大概的模样&#xff0c;本期一样重要&#xff0c;能学到操作系统设计的优美&#xff0c;体会到前辈们的智慧。 #环境变量 是什么 OS提供&#xff0c;往往有特殊功能的全局变量&#xff08;/etc/profile.d是设置环境变量的目录&#xff09; [b…

React 入门:实战案例 Github搜索_axios发送请求

文章目录快速搭建 API 服务器在 Search 组件中实现 Axios 发送请求在 App 组件中管理 List 组件的用户列表状态在 List 组件中更新渲染用户列表数据优化完善完整源码最终效果&#xff1a;快速搭建 API 服务器 根据下面步骤来操作&#xff0c;就可以快速搭建一个符合本案例使用…

明年跨境电商外贸的新增量在哪里?来自专家的2个判断

明年跨境电商外贸的新增量在哪里&#xff1f;来自专家的2个判断2022年&#xff0c;外贸大环境不容易&#xff0c;外贸人也不容易。自2021年9月以来&#xff0c;海运费飙涨&#xff0c;库容一降再降。大批的货品滞留库存&#xff0c;部分卖家只好硬着头皮扛下来了高额的仓储费&a…

最佳实践 | 帮助您的游戏在斋月期间大放异彩

作者 / Google Play 游戏业务发展经理 Nimrod Levy世界各地的开发者都发现&#xff0c;在斋月期间&#xff0c;许多庆祝这个神圣月份的国家/地区的用户都会比平时更活跃。这是一个吸引穆斯林玩家的宝贵机会。斋月是伊斯兰历的第 9 个月。世界各地的穆斯林都会在这个月进行斋戒、…

RV1126笔记二十二:pt->onnx->rknn模型转换

若该文为原创文章,转载请注明原文出处。 一、介绍 实现的目标是,把RK提供的yolov5s.pt转成onnx,在把onnx转成rknn,部署到RV1126上面。 这里不训练模型,所以只要搭建好环境后,就可以直接运行测试。 这里只是提供一种转换的方法,有其他的方式,可以自行测试。 由于不…

立根铸魂 崛起数智时代 操作系统产业峰会2022即将启幕!

如今&#xff0c;数字经济成为全球经济增长的主引擎。基础软件是数字经济发展的基础&#xff0c;是制造强国、网络强国、数字中国建设的关键支撑。而基础软件中的操作系统&#xff0c;作为数字基础设施的底座&#xff0c;已经成为推动产业数字化、智能化发展的核心力量。 2022…

Codeforces Round #840 (Div. 2)

A. Absolute Maximization 题目链接&#xff1a;Problem - A - Codeforces 样例输入&#xff1a; 4 3 1 0 1 4 5 5 5 5 5 1 2 3 4 5 7 20 85 100 41 76 49 36样例输入&#xff1a; 1 0 7 125题意&#xff1a;给定一个长度为n的数组a[]&#xff0c;我们可以对这个数组中的数进…

VueJs中setup的使用(上)

前言在写组合式API代码时,首先接触到的是setup这个函数,在一些项目代码里,你会看到有的直接在script标签上添加setup标识,有的在选项式API方式里,以setup()函数,配置选项的方式出现在单文件组件里什么时候用setup()函数方式,什么时候不用,对于有些新手同学,有些困惑,以及它的一…

聚观早报 | 特斯拉上海工厂被曝停产;富士相机X-Pro 3已停产

今日要闻&#xff1a;特斯拉上海工厂被曝停产&#xff1b;富士相机X-Pro 3已停产&#xff1b;字节复活红果小说App&#xff1b;网易云音乐首份乐评报告发布&#xff1b;辛巴年货节单场带货超1400万单特斯拉上海工厂被曝停产 12 月 26 日消息&#xff0c;根据一份内部通知和两位…

十八、Docker可视化管理工具Portainer

1、概述 Portainer分两个版本 开源版本&#xff1a;Portainer Community Edition (CE) 和商业版本&#xff1a;Portainer 商业版 (BE)。 CE 拥有超过 50 万的普通用户&#xff0c;是一个功能强大的开源工具集&#xff0c;可让您轻松地在 Docker、Docker Swarm、Kubernetes 和…

SpingBoot常见注解区分

1、Mapper注解&#xff1a; 作用&#xff1a;在接口类上添加了Mapper&#xff0c;在编译之后会生成相应的接口实现类 添加位置&#xff1a;接口类上面 Mapper public interface UserMapper{/*** param username 用户名* param password 密码* param memberLevelId 会员级别* p…