ARC143D Bridges

题目


i i i i + n i+n i+n 看作一个点,对所有 a i a_i ai b i b_i bi 连边,得到的图称为 G G G,则 G G G 的割边 ( a i , b i ) (a_i,b_i) (ai,bi) 在原图中 ( a i , b i + n ) (a_i,b_i+n) (ai,bi+n) ( a i + n , b i ) (a_i+n,b_i) (ai+n,bi) 也是割边(因为 a i a_i ai b i b_i bi 之间只有一条路径)。

直接给出结论:除了上面的割边外,存在一种构造方案,不存在其他的割边。下面将构造之。

考虑把点 1 ∼ n 1\sim n 1n 看作是入点,点 n + 1 ∼ 2 n n+1\sim 2n n+12n 看作是出点,即若 M i = 0 M_i=0 Mi=0,连 a i → b i a_i\to b_i aibi,否则连 b i → a i b_i\to a_i biai。我们考虑图 G G G 中组成边双的边,是否能确定方向,在现在的图中能组成强连通分量。在当前图上跑 dfs,对于返祖边,就向上连,否则向下连。这样一定能保证最优。

时间复杂度 O ( n + m ) O(n+m) O(n+m)

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int n,m,a[N],b[N],vis[N],vis1[N<<1];
int head[N],nxt[N<<1],to[N<<1],ans[N<<1],cnt=1;
void add(int u,int v)
{to[++cnt]=v;nxt[cnt]=head[u];head[u]=cnt;
}
void dfs(int u,int fa)
{if(vis[u]) return;vis[u]=1;for(int i=head[u];i;i=nxt[i]){if((i^1)==fa||vis1[i]) continue;vis1[i^1]=vis1[i]=1;ans[i]=1,ans[i^1]=0;dfs(to[i],i);}
}
int main()
{cin>>n>>m;for(int i=1;i<=m;i++) cin>>a[i];for(int i=1;i<=m;i++) cin>>b[i],add(a[i],b[i]),add(b[i],a[i]);for(int i=1;i<=n;i++) if(!vis[i]) dfs(i,0);for(int i=1;i<=m;i++) cout<<ans[i<<1];
}

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

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

相关文章

【Matlab】音频信号分析及FIR滤波处理——凯泽(Kaiser)窗

一、前言 1.1 课题内容: 利用麦克风采集语音信号(人的声音、或乐器声乐),人为加上环境噪声(窄带)分析上述声音信号的频谱,比较两种情况下的差异根据信号的频谱分布,选取合适的滤波器指标(频率指标、衰减指标),设计对应的 FIR 滤波器实现数字滤波,将滤波前、后的声音…

贪吃蛇/链表实现(C/C++)

本篇使用C语言实现贪吃蛇小游戏&#xff0c;我们将其分为了三个大部分&#xff0c;第一个部分游戏开始GameStart&#xff0c;游戏运行GameRun&#xff0c;以及游戏结束GameRun。对于整体游戏主要思想是基于链表实现&#xff0c;但若仅仅只有C语言的知识还不够&#xff0c;我们还…

Compose开发No virtual method at(Ljava/lang/Object;I)错误【已解决】

此问题主要是在用CircularProgressIndicator时报错的&#xff0c;其他没遇到。 在升级不同版本时出现了不少问题&#xff0c;现在记录一下 1、mutableIntStateOf()函数的出现 要将此条版本更新到2.6.2及以上 implementation("androidx.lifecycle:lifecycle-runtime-ktx:…

学习笔记推荐:极客时间《Java常见错误100例》

最近&#xff0c;我有幸接触了一套非常精彩的学习笔记&#xff0c;《Java常见错误100例》。&#xff08;手册链接在文末&#xff01;&#xff01;&#xff01;&#xff09; 这套学习笔记出自极客时间&#xff0c;对于想要在 Java 开发领域深耕细作的朋友们来说&#xff0c;它无…

SpringBoot内置工具类

Collections java.util包下的Collections类&#xff0c;该类主要用于操作集合或者返回集合 一、排序 List<Integer> list new ArrayList<>();list.add(2);list.add(1);list.add(3);Collections.sort(list);//升序System.out.println(list);Collections.reverse(…

hot100 -字母异位词分组

题目介绍 给定一个字符串数组&#xff0c;要求将其中的字母异位词组合在一起&#xff0c;并可以按任意顺序返回结果列表。字母异位词是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[…

WPF的ViewBox控件

在WPF中&#xff0c;ViewBox是一个用于缩放和调整其子元素大小的容器控件。它可以根据可用空间自动调整子元素的大小&#xff0c;以使其适应ViewBox的边界。这使得在不同尺寸的窗口或布局中保持元素的比例和缩放变得更加容易。 ViewBox具有以下重要属性&#xff1a; Stretch&…

基于Python flask MySQL 猫眼电影可视化系统设计与实现

1 绪论 1.1 设计背景及目的 猫眼电影作为国内知名的电影信息网站&#xff0c;拥有海量的电影信息、票房数据和用户评价数据。这些数据对于电影市场的研究和分析具有重要意义。然而&#xff0c;由于数据的复杂性和数据来源的多样性&#xff0c;如何有效地采集、存储和展示这些数…

【Linux 内核源码分析】多核调度分析

多核调度 SMP&#xff08;Symmetric Multiprocessing&#xff0c;对称多处理&#xff09;是一种常见的多核处理器架构。它将多个处理器集成到一个计算机系统中&#xff0c;并通过共享系统总线和内存子系统来实现处理器之间的通信。 首先&#xff0c;SMP架构将一组处理器集中在…

程序员的基本素养之——R语言起源、特点以及应用

R语言是一种功能强大的数据分析、统计建模、可视化、 免费、开源且跨平台的编程语言 作为用于数据统计的必备技能语言&#xff0c;博主目前正在对R语言进行基本的学习&#xff0c;这也是生物信息学领域进行统计分析的必备语言之一。下面跟我来一起看看吧&#xff01; R语言是一…

鸿蒙自定义Http网络访问组件

前言 DevEco Studio版本:4.0.0.600 使用效果 如何使用 参考文档:OpenHarmony http数据请求 1、module创建 File-->New-->Module,选择Static Library 2、相关类创建 HttpCore:Http的核心类,用于http的请求 RequestMethod:http请求的类型,包含:GET、POST等 …

基本数据类型细节【java】

整形细节 1.java个整数类型有固定的范围和字段长度&#xff0c;不受具体OS【操作系统】的影响&#xff0c;以保证java程序的移植性 2.java的整型常量默认为int型&#xff0c;声明long型常量须在后面加l或者L int n1 1;//4个字节 //int n2 1L;//不对 long n3 1L; //对 3.J…

你好,C++(9)坐216路公交车去买3.5元一斤的西红柿——C++中如何表达各种数值数据 3.3 数值数据类型

3.3 数值数据类型 从每天早上睁开眼睛的那一刻开始&#xff0c;我们几乎每时每刻都在与数字打交道&#xff1a;从闹钟上的6点30分&#xff0c;到上班坐的216路公共汽车&#xff1b;从 新闻中说的房价跌到了100元每平米到回家买菜时的西红柿3.5元一斤。我们生活在一个充满数字的…

个性化联邦学习所面临的挑战:

个性化联邦学习所面临的挑战&#xff1a; 1、Federated Learning with Personalization Layers Li等人(2019)最近发表的综述文章阐述了联邦学习系统面临的许多独特挑战。其中一个挑战是&#xff0c;不同客户端的有效数据分布可能在参与的设备之间(可能有数百万台)差异很大。这…

04.领域驱动设计:了解聚合和聚合根,怎样设计聚合

目录 1、概述 2、聚合 3、聚合根 4、怎么设计聚合 4.1 聚合的构建过程主要步骤 第 1 步&#xff1a;采用事件风暴。 第 2 步&#xff1a;选出聚合根。 第 3 步&#xff1a;找出与聚合根关联的所有紧密依赖的实体和值对象。 第 4 步&#xff1a;画出对象的引用和依赖模型…

强缓存与协商缓存、缓存失效的问题、缓存nginx配置、缓存存在哪里

前端缓存&#xff0c;这是一个老生常谈的话题&#xff0c;也常被作为前端面试的一个知识点。今天我们来总结一下。 分类&#xff1a;前端缓存分为强缓存和协商缓存两种。 强缓存 强缓存主要使用 Expires、Cache-Control 两个头字段&#xff0c;两者同时存在 Cache-Control 优…

P2246 SAC#1 - Hello World(升级版)

网址如下&#xff1a; P2246 SAC#1 - Hello World&#xff08;升级版&#xff09; - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 刚开始是用递归做的&#xff0c;虽然用了哈希表优化&#xff0c;但是超时&#xff0c;只得了50 后面想到了一个新的算法&#xff0c;时间复杂度…

喝酒筛子小游戏集合源码微信小程序喝酒骰子程序带流量主版本源码酒桌玩筛子源码

2023新版酒桌小游戏喝酒小程序源码-&#xff08;流量主版本&#xff09; 修改增加了广告位 根据文档直接替换&#xff0c;原版本没有广告位 直接上传源码到开发者端即可 通过后改广告代码&#xff0c;然后关闭广告展示提交&#xff0c;通过后打开即可 无广告引流 流量主版…

3338 蓝桥杯 wyz的数组IV 简单

3338 蓝桥杯 wyz的数组IV 简单 //C风格解法1&#xff0c;通过率50% #include<bits/stdc.h>int main(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);int n; std::cin >> n;int ans 0;std::vector<int>a(n);for(auto &am…

深入探究C语言中的常量指针与野指针概念及其应用

目录 常量指针&#xff08;Constant Pointers&#xff09; 1. 指向常量的指针 2. 常量指针 以下是一个使用const声明常量的示例&#xff1a; 通过修改被const修饰的a的地址&#xff0c;修改a的值 const位置的不同 指针的应用 利用指针打印数组的几种方式 野指针&#x…