codeforces723E One-Way Reform(欧拉通路)

2023-11-11 11:58

本文主要是介绍codeforces723E One-Way Reform(欧拉通路),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一次打线上赛,1456分来着,感觉自己模拟题做的不怎么样,总是想复杂,而且写代码慢的要死,这套题说实话还算简单,但只A了两道,其他的题都很基础,这题欧拉通路我刚好不会,所以写一下。

题意:

n个城市之间m条双向道路,现在把双向道路变成单向,求让出入度相同的城市最多的路线图。

要点:

这题就是个欧拉通路问题,因为要把双向变成单向,所以原本的出度如果是奇数,说明这个顶点的入度和出度不相等,原本是偶数的直接就是相等的,所以最大城市数就是n-出度奇数个数。现在问题是怎么输出最后的路线图,我们引入一个新顶点,将所有出度为奇数的点与新顶点连接,这样图中所有点的出入度都相等。这里说明一下出度为奇数的点一定是偶数个,因为一条边对应两个点,这里多一个那边就少一个。这样对整个图进行dfs输出欧拉回路即可。

#include<iostream>
#include<set>
#include<algorithm>
using namespace std;
set<int> edge[210];//用set方便之后删除边
int t, n, m;void dfs(int i)
{if (edge[i].empty())//如果当前顶点没有出去的边就返回return;int x = *edge[i].begin();edge[i].erase(x);//将经过的边消除edge[x].erase(i);		if (i != n + 1 && x != n + 1)//新加入的点不参与输出printf("%d %d\n", i, x);dfs(x);
}int main()
{int i, j;scanf("%d", &t);while (t--){scanf("%d%d", &n, &m);for (i = 0; i < 210; i++)edge[i].clear();int u, v;for (i = 1; i <= m; i++){scanf("%d%d", &u, &v);edge[u].insert(v);edge[v].insert(u);}for(i=1;i<=n;i++)if (edge[i].size() & 1){edge[i].insert(n + 1);edge[n + 1].insert(i);}printf("%d\n", n-edge[n + 1].size());for (i = 1; i <= n; i++){while (!edge[i].empty()){dfs(i);}}}return 0;
}





这篇关于codeforces723E One-Way Reform(欧拉通路)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/389888

相关文章

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

欧拉系统 kernel 升级、降级

系统版本  cat  /etc/os-release  NAME="openEuler"VERSION="22.03 (LTS-SP1)"ID="openEuler"VERSION_ID="22.03"PRETTY_NAME="openEuler 22.03 (LTS-SP1)"ANSI_COLOR="0;31" 系统初始 kernel 版本 5.10.0-136.12.0.

pytorch torch.nn.functional.one_hot函数介绍

torch.nn.functional.one_hot 是 PyTorch 中用于生成独热编码(one-hot encoding)张量的函数。独热编码是一种常用的编码方式,特别适用于分类任务或对离散的类别标签进行处理。该函数将整数张量的每个元素转换为一个独热向量。 函数签名 torch.nn.functional.one_hot(tensor, num_classes=-1) 参数 t

nyoj99(并查集+欧拉路+dfs)

单词拼接 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 5 描述 给你一些单词,请你判断能否把它们首尾串起来串成一串。 前一个单词的结尾应该与下一个单词的道字母相同。 如 aloha dog arachnid gopher tiger rat   可以拼接成:aloha.arachnid.dog.gopher.rat.tiger 输入 第一行是一个整

nyoj42(并查集解决欧拉回路)

一笔画问题 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。   输入 第一行只有一个正整数N(N<=10)表示测试数据的组数。 每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<

临床基础两手抓!这个12+神经网络模型太贪了,免疫治疗预测、通路重要性、基因重要性、通路交互作用性全部拿下!

生信碱移 IRnet介绍 用于预测病人免疫治疗反应类型的生物过程嵌入神经网络,提供通路、通路交互、基因重要性的多重可解释性评估。 临床实践中常常遇到许多复杂的问题,常见的两种是: 二分类或多分类:预测患者对治疗有无耐受(二分类)、判断患者的疾病分级(多分类); 连续数值的预测:预测癌症病人的风险、预测患者的白细胞数值水平; 尽管传统的机器学习提供了高效的建模预测与初步的特征重

UVa 10820 Send a Table (Farey数列欧拉函数求和)

这里先说一下欧拉函数的求法 先说一下筛选素数的方法 void Get_Prime(){ /*筛选素数法*/for(int i = 0; i < N; i++) vis[i] = 1;vis[0] = vis[1] = 0;for(int i = 2; i * i < N; i++)if(vis[i]){for(int j = i * i; j < N; j += i)vis[j] =

leetcode#66. Plus One

题目 Given a non-negative integer represented as a non-empty array of digits, plus one to the integer. You may assume the integer do not contain any leading zero, except the number 0 itself. The digi

JD 1027:欧拉回路

OJ题目:click here~~ 题目分析: 若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径。若该路径是一个圈,则称为欧拉(Euler)回路。 具有欧拉路径的图称为欧拉图(简称E图)。 无向图存在欧拉回路的充要条件: 一个无向图存在欧拉回路,当且仅当该图拥有奇数度数的顶点的个数为0且该图是连通图。 有向图存在欧拉回路的充要条件: 一

欧拉数据库的搭建及其部署

数据库的搭建 进行数据库安装前,必须保证软件yum仓库搭建完成 使用命令 dnf install mariadb-server,发现冲突selinux-policy-targeted-35.5-21.oe2203sp3.noarch有问题 [root@localhost yum.repos.d]# dnf install mariadb-server [root@localhost yu