西安电子科技大学第二届程序设计新生赛-F-zxy的长跑【欧拉回路】

2023-11-15

题目链接


  好极了的欧拉回路,我们想知道怎样才能跑完所有的边,我们可以从度为奇数的点出发——因为这是欧拉回路的无向图的先觉调节,当然,这道题还有另外一种可能就是这是一个环,1->2, 2->3, 3->4, 4->1,那么就没有奇数度的点了,就是随便找一个id最小的点出发就是了。

  接下来讲解一下欧拉回路在本题中的思考,本题有坑点,但是放在后头说,我们首先得判断这群点是否在一棵树上,不然的话就跑不到所有的边,既然所有的边都要跑到,在存在奇数度的点的情况的时候,我们断不能从偶数度的点出发,先找到个id最小的奇数点,并从它出发,知道最终找到结束的节点,并且,结束的那个节点也断然是个奇数度的节点;另外,不存在奇数度的点情况呢,就是它们是一个完整的环,对于这样的情况,我们直接找到个最小id序的有度节点即可,当然强调有度的节点,不然会WA,因为题意没说节点从1开始(WA了好几发的亲身经历)。


#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int maxN = 505;
int N, M, du[maxN]={0}, path[maxN][maxN]={0}, root[maxN], rx, ry, st, ed, out_put[maxN], keys;
vector<int> vt[maxN];
struct Eddge
{
    int no, to;
    Eddge(int a=0, int b=0):no(a), to(b) {}
}edge[maxN<<1];
int fid(int x) { return x==root[x]?x:(root[x] = fid(root[x])); }
void init()
{
    for(int i=1; i<=N; i++) root[i] = i;
}
void dfs(int u)
{
    int len = (int)vt[u].size();
    for(int i=0; i<len; i++)
    {
        int v = vt[u][i];
        if(path[u][v])
        {
            path[u][v]--;
            path[v][u]--;
            dfs(v);
            out_put[++keys] = u;
        }
    }
}
int main()
{
    scanf("%d%d", &N, &M);
    init();
    for(int i=1; i<=M; i++)
    {
        scanf("%d%d", &edge[i].no, &edge[i].to);
        path[edge[i].no][edge[i].to]++;
        path[edge[i].to][edge[i].no]++;
        vt[edge[i].to].push_back(edge[i].no);
        vt[edge[i].no].push_back(edge[i].to);
        du[edge[i].no]++;
        du[edge[i].to]++;
        rx = fid(edge[i].no);   ry = fid(edge[i].to);
        if(rx != ry) root[rx] = ry;
    }
    for(int i=1; i<=N; i++) sort(vt[i].begin(), vt[i].end());
    int num = 0, the_tree = 0;
    for(int i=1; i<=N; i++)
    {
        if(du[i] & 1) num++;
        if(root[i] == i && du[i]) the_tree++;
    }
    if(num > 2 || the_tree>1) { printf("-1\n"); return 0; }
    st = ed = 1;
    for(int i=1; i<=N; i++)
    {
        if(du[i]) { st = ed = i; break; }   //题中没说节点从1开始
    }
    if(num == 2)
    {
        for(int i=1; i<=N; i++)
        {
            if(du[i] & 1)
            {
                st = ed = i;
                break;
            }
        }
        for(int i=N; i>=1; i--)
        {
            if(du[i] & 1)
            {
                ed = i;
                break;
            }
        }
    }
    dfs(st);
    for(int i=keys; i>=1; i--) printf("%d ", out_put[i]);
    printf("%d\n", ed);
    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

西安电子科技大学第二届程序设计新生赛-F-zxy的长跑【欧拉回路】 的相关文章

  • LeetCode-Python-1584. 连接所有点的最小费用(MST)

    给你一个points 数组 表示 2D 平面上的一些点 其中 points i xi yi 连接点 xi yi 和点 xj yj 的费用为它们之间的 曼哈顿距离 xi xj yi yj 其中 val 表示 val 的绝对值 请你返回将所有点
  • 图论进阶指南-银河(差分约束/DAG/tarjan)

    测评地址 题目大意 第一行给出两个整数N和M 之后M行 每行三个整数T A B 表示一对恒星 A B 之间的亮度关系 恒星的编号从1开始 如果T 1 说明A和B亮度相等 如果T 2 说明A的亮度小于B的亮度 如果T 3 说明A的亮度不小于B
  • 【斯坦福CS224W笔记之二】传统图机器学习的特征工程 — 节点

    Traditional Methods for ML on Graphs 是根据同济子豪兄学长的中文讲解做的笔记哦 感兴趣的话可以直接去b站观看详细视频 传送带 https github com TommyZihao zihao cours
  • [STL]vector常见用法详解

    目录 引入 常见用法介绍 1 vector的定义 2 vector容器内元素的访问 3 vector常用函数实例解析 1 push back 2 pop back 3 size 4 clear 5 insert 6 erase vector
  • 数据结构 图的应用

    文章目录 生成树 定义 性质 带权图的最小生成树 最小生成树的生成规则 最小生成树 Kruskal算法 步骤 最小生成树 Prim算法 步骤 最短路径 非负权值的单源最短路径 Dijkstra算法 目的 算法 存储空间 算法步骤 算法实现
  • hdu 5756:Boss Bo

    题目链接如下 Problem 5756 先用dfs确定每个节点的序号编号 并且可以获得每个节点可以包括的子树节点区间范围 再用线段树建立一棵树 在第一次建立的时候我们记录每个节点的深度 然后再进行一次dfs 这次dfs用来更新以不同节点为根
  • 图论17(Leetcode864.获取所有钥匙的最短路径)

    用二进制表示获得的钥匙 假设n 钥匙个数 000000000代表没有钥匙 0000000001代表有idx为1的钥匙 0000000011代表有idx 1 2的钥匙 这方法巧妙又复杂 代码 class Solution static int
  • Even Degree【2020 年 “游族杯”E题】【欧拉回路】

    题目链接 题意 有N个点 M条边 每次可以删去一条两端点的度不都是奇数的边 问最多可以删除几条边 题目保证初始所有点度为偶数 首先 题目保证了初始的时候所有的点的度都是为偶数的 于是原图中的每一个联通块一定是一个欧拉回路 对于欧拉回路 最好
  • 大学生团体天梯赛(第五届)

    题目地址 天梯赛 include
  • 迪杰斯特拉算法浅析

    所谓的迪杰斯特拉算法 就是一个用来求一个图中某点到其它点的最短路径的算法 大致方法 遍历所有节点 找到离起点最近的一个点 那么这个点到起点的最小距离肯定是起点到这个点的这条边的权值 然后标记这个点被使用过了 以1中的那个点为中继 更新其它节
  • 最长公共上升子序列(LCIS)

    前置知识 LCS LIS 注意 刚开始看这个问题的时候 第一反应是先求出LCS再求出LCS的LIS 事实上这是有问题的 我们并不能保证这么求出的LCIS是最长的 比如下面这个例子 Example a 7 1 5 6 4 2 7 b 7 1
  • [NOI 2015复习][BZOJ 1509][NOI 2003]逃学的小孩(树的直径)

    题目链接 http www lydsy com JudgeOnline problem php id 1509 题目大意 要从一棵树中找出三个点 X Y Z X Y Z 使得 min dis A C dis B C dis A B min
  • 数据结构——非线性结构(图)

    文章目录 一 非线性结构的概述 二 图的基本概念 1 定义 2 无向图 有向图 2 1 无向图 2 2 有向图 2 3 简单图 2 4 多重图 3 顶点的度 出度 入度 3 1 对于无向图 3 2 对于有向图 4 边的权 带权图 网 5 点
  • 【算法笔记】Prim算法

    定义 prim算法 图论中的一种算法 可在加权连通图里搜索最小生成树 由此算法搜索到的边子集所构成的树中 不但包括了连通图里的所有顶点 并且其所有边的权值之和最小 算法描述 输入 一个加权连通图 其中顶点集合为V 边集合为E 初始化 Vne
  • Two Arithmetic Progressions

    Two Arithmetic Progressions 题目链接 题意 思路 AC代码1 include
  • 1600*B. pSort(并查集)

    解析 并查集 将能够交换的位置相连 查看对应的位置能够交换 include
  • 第14届蓝桥杯C++B组省赛

    文章目录 A 日期统计 B 01 串的熵 C 冶炼金属 D 飞机降落 E 接龙数列 F 岛屿个数 G 子串简写 H 整数删除 I 景区导游 J 砍树 今年比去年难好多 Update 2023 4 10 反转了 炼金二分没写错 可以AC了 U
  • 数据结构——广度优先遍历(BFS)无向连通图

    以下是数据结构中关于广度优先遍历无向连通图的操作 编程风格参考严蔚敏版数据结构 其实深度优先遍历就是二叉树的层次遍历的推广 头文件及宏 include
  • D (1173) : A DS二叉树_合并二叉树

    文章目录 一 题目描述 二 输入与输出 1 输入 2 输出 三 参考代码 一 题目描述 给定两个二叉树 输出这两个二叉树合并后形成的二叉树 依次输出前序遍历 中序遍历 后序遍历 二 输入与输出 1 输入 第一行输入t 表示有t个测试样例 第
  • E (1052) : DS树--带权路径和

    文章目录 一 题目描述 二 输入与输出 1 输入 2 输出 三 参考代码 一 题目描述 计算一棵二叉树的带权路径总和 即求赫夫曼树的带权路径和 已知一棵二叉树的叶子权值 该二叉树的带权路径和APL等于叶子权值乘以根节点到叶子的分支数 然后求

随机推荐

  • 使用vlc显示海康网络摄像机的视频

    通过博主的另外一篇博客https blog csdn net u014552102 article details 86700057 配置完海康网络摄像机后 我们就可以使用vlc显示摄像机的视频了 在下图所示的浏览器页面中 我们可以知道摄像
  • redis集群主从复制bug:从机出现master_link_status:down提示,显示主机是down的状态,主机显示没有从机挂载

    bug 从机出现master link status down 原因分析 这里主要是因为redis设置了密码 可以在redis conf文件里面配从不配主 也就是 将master和slave的密码配置相同 然后将slave的配置文件中的ma
  • matlab的一些基本矩阵函数总结

    单位矩阵的生成 A eye 3 3 生成一个3 3的单位矩阵 随机矩阵的生成 A rand 4 5 生成一个4 5的随机矩阵 对角矩阵的生成 d diag A 若A是一个矩阵 则d为取A对角线元素组成的一个向量 如果A为一个向量 则d是一个
  • 归并排序与基数排序

    你好 我是史丰源 欢迎你的来访 希望我的博客能给你带来一些帮助 我的Gitee 代码仓库 归并排序与基数排序 归并排序 概念 来自Wikipedia 实现算法 来自Wikipedia 基数排序 概念 来自Wikipedia 举例 来自Wik
  • 第十七讲:神州三层交换机DHCP服务器配置

    DHCP是基于Client Server模式的协议 DHCP客户机向DHCP服务器索取网络地址及配置参数 服务器为客户机提供网络地址及配置参数 当DHCP客户机和DHCP服务器不在同一子网时 需要由DHCP中继为DHCP客户机和DHCP服务
  • 2021年南京市高考成绩查询,2021年南京各高中高考成绩排名及放榜最新消息

    一 2020年南京各高中高考成绩排名及放榜最新消息 南师附中 理科最高分431分 裸分400分及以上147人 据统计 南师附中在本届已有9位同学2019年被中国科技大学创新班提前录取 5位同学被清华 北大保送的情况下 共563人参加高考 理
  • java中的流的分类

    java中的流的分类 按照流是否直接与特定的地方 如磁盘 内存 设备等 相连 分为节点流和处理流两类 节点流 可以从或向一个特定的地方 节点 读写数据 如FileReader 处理流 是对一个已存在的流的连接和封装 通过所封装的流的功能调用
  • 它来了!Flutter3.0新特性全接触

    点击上方蓝字关注我 知识会给你力量 又到了Flutter稳定版发布的时候了 我们非常自豪地宣布Flutter 3 仅仅三个月前 我们宣布Flutter支持Windows 今天 我们很高兴地宣布 除了Windows之外 Flutter现在在m
  • svpwm之先把电机转起来

    学习FOC一段时间 怎是没有长进 一直看书 FOC框架比较复杂 我在想可不可以输出一个固定频率的SVPWM先把电机转动起来 FOC框架如上图 我先实现SVPWM部分 如下图框选的部分 生成7段式SVPWM 1 硬件平台选择 硬件平台 MCU
  • 解决在本地连接不上阿里云服务器mysql服务的问题

    先得在阿里云上把3306端口添加到安全组 首先先进入mysql的服务 选择mysql这个库 然后查看user用户的host属性 会发现其host属性值是localhost 意思是只准许本地的连接访问 此时我们要对他修改为谁都可以访问的 修改
  • Albumentations 对 PIL 图像进行数据增强

    要使用 Albumentations 对 PIL 图像进行数据增强 你需要将 PIL 图像转换为 NumPy 数组 并使用 Albumentations 库中的转换函数来进行数据增强 以下是一个示例代码 import albumentati
  • dhcp协议配置练习

    路由器配置 配置接口ip地址 配置地址池 开启dhcp全局映射 结果 Pc1 Pc2 Pc3 Pc4
  • postman中post请求正常,但是利用postman生成C#后台http模拟代码之后调用失败问题记录

    postman中post请求正常 但是利用postman中code功能生成C 后台代码之后 填入C 后台失败 postman中code生成的代码引用的是RestSharp Restful Client开发 RestSharp帮助类 post
  • vue特性 is ref

    is属性 使用is标签解决页面中出现的小bug 例如下面的例子 div table tbody tbody table div
  • Linux INPUT 子系统实验

    目录 input 子系统 input 子系统简 input 驱动编写流程 input event 结构体 硬件原理图分析 实验程序编写 修改设备树文件 按键input 驱动程序编写 编写测试APP 运行测试 编译驱动程序和测试APP 运行测
  • springBoot打印请求信息日志,如请求头,请求体,请求路径等

    背景 和前端联调 前端总是说接口对了呀 后端说 没有进我的方法呀 后端加日志拦截所以请求 过程 springmvc代码 包装类中报错getReader has already been called for this request 代码里
  • @RefreshScope注解底层源码分析

    写在前面 最近在研究Spring Cloud和Spring Cloud Alibaba源码 在看到Nacos的配置中心的时候 有注意到自动刷新配置的玩法 底层实现依靠 RefreshScope注解 那么为什么要写这篇文章呢 笔者认为 Ref
  • 关于使用Tensorflow时,Optimizer定义的位置不正确时出现的错误

    参考 1 https github com tensorflow tensorflow issues 7244 2 https stackoverflow com questions 47765595 tensorflow attempti
  • 基于Echarts的数据可视化大屏

    本项目学习于b站up主 视频链接 up主分享的资料 gitee仓库 其中有笔记 笔记链接 项目总结 项目主要分为前端页面的布局和Echarts图表的嵌入 页面主要就是css较为繁琐 图表毕竟官网有模板 操作较为简单 以后有时间会利用爬虫的数
  • 西安电子科技大学第二届程序设计新生赛-F-zxy的长跑【欧拉回路】

    题目链接 好极了的欧拉回路 我们想知道怎样才能跑完所有的边 我们可以从度为奇数的点出发 因为这是欧拉回路的无向图的先觉调节 当然 这道题还有另外一种可能就是这是一个环 1 gt 2 2 gt 3 3 gt 4 4 gt 1 那么就没有奇数度