首页 > 其他分享 >AtCoder Beginner Contest 286(G)

AtCoder Beginner Contest 286(G)

时间:2023-06-02 15:22:21浏览次数:48  
标签:AtCoder Beginner int 路径 maxn 286 include find define

AtCoder Beginner Contest 286(G)

G(欧拉路径)

G

题意大致为\(n\)个点,\(m\)个边的图,然后给出\(k\)条边的编号,问我们这\(k\)条边可不可以在一条路径上(每条边都可以经过)

对于可不可以存在一条路径,里面包含个题目所给的\(k\)条边,其实就是问是否存在一条路可以经历这\(k\)条边,然后我们或许会想到这个有点像欧拉路径

什么是欧拉路径,可以看这儿

这里我们已经知道了判断一个无向图是否是否存在欧拉路径,就是判断奇点的个数(要么是\(0\)要么是\(2\))

但是,我们发现还会有一些没有被选择的边,它可以经过,也可以不经过,我们可以把这些边上的两个点缩成一个点,后面再求在只考虑被选择的边的情况下每一个点的度数,然后根据判断奇点的个数判断是否存在一条欧拉路径包含那\(k\)个边

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include<cmath>
#include <unordered_map>
#include <array>
#include <cstring>
#include <numeric>
using namespace std;
#define int long long 
#define LL long long
#define ios  ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define inf 1e18
#define INF 1e18
#define mem(a,b) memset((a),(b),sizeof(a))
const int maxn=2e5+10;
const int mod=998244353;
int n,m,k;
int f[maxn];
bool used[maxn];
int u[maxn],v[maxn];
int d[maxn];
int find(int x)
{
    if(f[x]==x) return x;
    return f[x]=find(f[x]);
}
void merge(int x,int y)
{
    int tx=find(x),ty=find(y);
    if(tx==ty) return ;
    f[ty]=tx;
    return ;
}
signed main ()
{
    cin>>n>>m;
    for (int i=1;i<=n;i++)
    {
        f[i]=i;
    }
    for (int i=1;i<=m;i++)
    {
        cin>>u[i]>>v[i];
    }
    cin>>k;
    for (int i=1;i<=k;i++)
    {
        int x;
        cin>>x;
        used[x]=true;
    }
    for (int i=1;i<=m;i++)
    {
        if(!used[i])
        {
            merge(u[i],v[i]);
        }
    }
    for (int i=1;i<=m;i++)
    {
        if(used[i])
        {
            int x=find(u[i]);
            int y=find(v[i]);
            d[x]++;
            d[y]++;
        }
    }
    int cnt=0;
    for (int i=1;i<=n;i++)
    {
        if(f[i]==i)
        {
            if(d[i]&1) cnt++;
        }
    }
    if(cnt==0||cnt==2)
    {
        cout<<"Yes\n";
    }
    else 
    {
        cout<<"No\n";
    }
    system ("pause");
    return 0;
}

感觉这次\(vp\)的题目有一点水,我竟然石破天惊地写了\(E\),但是\(F\)是交互题,我不会,而且\(G\)补题也很顺利

标签:AtCoder,Beginner,int,路径,maxn,286,include,find,define
From: https://www.cnblogs.com/righting/p/17451884.html

相关文章

  • 树莓派之OLED12864视频播放—BadApple
    概述本篇教程讲述了使用树莓派驱动OLED12864液晶屏,并在液晶屏上播放动画和视频.硬件平台树莓派一台—RaspberryPi_2B。OLED12864显示屏一块,SPI接口。软件平台wiringPi—开源树莓派GPIO库。EasyBMP—开源BMP图片处理库(这个库是用C++编写的,主要为了方便提取BMP图片数据,我已经做好了......
  • Beginner:Client libraries-3 创建一个包
    目标:使用CMake或者Python来创建一个新的包,运行可执行程序;背景1、ROS2的包是什么一个包是作为ROS2代码的组织单元。如果你想安装你的代码或与他人共享,那么你需要将其组织在一个包中。有了软件包,您可以发布您的ROS2作品,并允许其他人轻松构建和使用它。在ROS2中包的创建使用amen......
  • Beginner:Client libraries-2 创建工作空间
    目标:创建一个工作空间,学习如何设置开发和测试覆盖层(overlay)。背景工作空间是一个包含了ROS2的包的路径,在使用ros2之前首先需要source相应的ROS2工作空间来使用对应的包。overlay是一个可以添加新的包而不影响现有ROS2工作区,即underlay的工作空间;underlay中包含着overlay的依......
  • Beginner:Client libraries-1 使用colcon编译包
    目标:用colcon编译一个ROS2工作空间。这是一个关于如何使用colcon创建和构建ROS2工作区的简短教程。背景colcon是ROS编译工具catkin_make, catkin_make_isolated, catkin_tools and ament_tools的替代。安装colconsudoaptinstallpython3-colcon-common-extensions基......
  • ROS2-Beginner:9-启动节点
    目标:使用命令行工具来启动多个节点背景在大多数入门教程中,您一直在为运行的每个新节点打开新的终端。当您创建越来越多节点同时运行的更复杂的系统时,打开终端和重新输入配置细节会变得乏味。launch文件允许您同时启动和配置包含ROS2节点的许多可执行文件。使用ros2-launch命......
  • ROS2-Beginner:10-记录和播放数据
    目标:记录发布到话题上的数据,可以任何时候回放和检查。背景ros2-bag是一个命令行工具,用于记录系统中主题发布的数据。它累积在任意数量的主题上传递的数据,并将其保存在数据库中。然后,您可以回放数据以重现测试和实验的结果。录制主题也是分享你的作品并允许他人重新创作的好方法......
  • ROS2-Beginner:8-使用rqt_console来浏览日志
    目标:了解rqt_console,用于查看日志消息的工具。背景rqt_console是一个图形化工具用于查看ROS2中的日志消息。通常,日志消息在你个终端显示。用rqt_console,可以统一浏览这些日志,过滤、保存以及从文件中加载。任务1、启动rqt_consoleros2runrqt_consolerqt_console启动turt......
  • AtCoder Beginner Contest 214 G Three Permutations
    洛谷传送门AtCoder传送门比较平凡的一个容斥。考虑把问题转化成,求\(\foralli\in[1,n],r_i\nei\landr_i\nep_i\)的\(r\)方案数。考虑到不弱于错排,所以容斥。设钦定\(i\)个\(r_i\)取了\(i,p_i\)中的一个的方案数为\(f_i\),其余任意,那么:\[ans=\sum\limi......
  • ROS2-Beginner:7-理解行为
    背景行为ROS2中的一种通信类型,用于长时间的运行任务。由三个部分组成:目标,反馈以及结果。行为建立在话题和服务之上的。他们的功能类似于服务,但可以取消操作。他们还提供了稳定的反馈,而不是返回单一的响应的服务。行为使用了一个客户端-服务器模型,类似于发布者和订阅者。一个行......
  • ROS2-Beginner:5-理解服务
    背景服务是rosgraph中另一种通信方法。服务是基于调用和响应相比话题是发布者和订阅者模式。话题允许节点来订阅数据流并获得连续的更新。服务只当被具体客户端调用时才提供数据。任务1、打开turtlesim仿真器ros2runturtlesimturtlesim_noderos2runturtlesimturtle......