【题解】洛谷P8346:最澄澈的空与海

news/2024/11/14 7:15:09/文章来源:https://www.cnblogs.com/sadlin/p/18542140

【题解】洛谷P8346:最澄澈的空与海

猜结论题,本身其实很简单,在纸上画个差不多就能想出来,我一开始想二分图最大匹配,但是还是太大了,不可以。

当一个二分图有且仅有一种解时,必定有节点的入度为 \(1\)

我们想到有多种匹配的情况,可以想到如果这是一个环的情况,一个左边的点将他右边的点都标记后另一个点再遍历出边后没有可以连的右点了就说明有环的,我们可以用拓扑保证复杂度与正确性,具体怎么做我省略,具体看代码。

image

#include <bits/stdc++.h>
#define int long long
#define ls p<<1
#define rs p<<1|1 
#define re register 
const int N=2e6+10;
const int mod=1000;
using namespace std;int t;
int n,m;vector<int> v[N];
int du[N];
int vis[N];
int ans=0;
queue<int> q;
int solve(){ans=0;cin>>n>>m;for(int i=1;i<=m;i++){int u,vv;cin>>u>>vv;v[u].push_back(vv+n);v[vv+n].push_back(u);du[u]++;}for(int i=1;i<=n;i++){if(!du[i]){return 0;}if(du[i]==1){q.push(i);ans++;}}while(!q.empty()){int x=q.front();q.pop();for(int i=0;i<v[x].size();i++){int y=v[x][i];if(vis[y]){continue;}vis[y]=1;for(int k=0;k<v[y].size();k++){int yy=v[y][k];if((--du[yy])==1){q.push(yy);ans++;}}}} return ans==n;
}signed main(){ios::sync_with_stdio(false);cin.tie(nullptr); cin>>t;while(t--){if(solve()){cout<<"Renko\n";}else{cout<<"Merry\n";} while(!q.empty()){q.pop();}for(int i=1;i<=2*n;i++){v[i].clear();du[i]=0;vis[i]=0;}} return 0;
}

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

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

相关文章

过路车辆识别智慧矿山一体机罐笼乘坐人员超限识别煤矿安全监控系统升级改造技术方案

在当今煤炭行业的发展中,安全和效率是两个核心议题。随着技术的进步,智慧矿山的概念应运而生,它代表着煤炭行业向智能化、自动化的转型。智慧矿山一体机煤矿安全监控系统的升级改造技术方案,正是在这样的行业需求背景下提出的。这一方案旨在通过集成先进的信息技术,如物联…

birdwatcher安装使用

1.官网下载二进制版本的安装包,解压到相应目录即可运行https://github.com/milvus-io/birdwatcher 2.尝试使用birdwatcher链接注意单机部署的milvus默认是没有暴露etcd端口的,需要修改配置重新部署[root@localhost birdwatcher]# ./birdwatcherOffline > connect --etcd 1…

这款工具让开发变得没门槛了

在快速变化的软件开发领域,工具的选择往往能决定开发效率的高低。今天,我要介绍的是一款能够让你告别繁琐编程步骤,实现需求到代码快速转换的在线开发工具——TitanIDE。它凭借一键生成代码和一键解释代码的功能,为开发者们带来了前所未有的便捷体验。 一、前言 在传统的开…

Linux各种作死故障与修复方法,全面复盘全程高能,系统级故障救援经验汇总

来自:https://www.cnblogs.com/liulianzhen99/p/17543477.html原文连接:https://mp.weixin.qq.com/s/l_D3-jm4JWPIz3DecrRUyw1 linux启动过程启动过程分析 启动级别init 0,init3, init5 init6。 systemd 服务管理。 systemd 导致系统反复重启:2 磁盘与分区配置文件磁盘UUID…

强化学习的数学原理-09策略梯度

目录Basic idea of policy gradientMetrics to define optimal policiesaverage valueaverage rewardGradient of the metricsGradient-ascent algorithm(REINFORCE) Basic idea of policy gradient 截至目前,所有的策略policy都是用表格表示的,如下图所示,每个状态对应一行…

1. 初始认识 Spring Cloud

1. 初始认识 Spring Cloud @目录1. 初始认识 Spring Cloud前言2. Spring Cloud 基本介绍3. 系统架构的演变过程3.1 单机架构3.2 动静分离架构:静态缓存 + 文件存储3.3 分布式架构:业务拆分 + 负载均衡3.4 微服务架构:使用 Spring Cloud4. Spring Cloud 全面说明4.1 Spring C…

请问有哪些好用的项目管理工具?做个项目经理需要哪些能力?

常用的项目管理工具: 项目管理工具种类繁多,适用于不同规模和类型的项目。以下是一些常见且功能强大的项目管理工具: 1. Trello特点:看板式任务管理工具,简单易用,适合小型项目或团队。任务通过卡片和列表进行管理,可以灵活拖动和更新进度。 适用场景:适合小团队、创业…

大家做项目管理时都用的什么工具?

在项目管理中,常用的工具涵盖了从任务分配、团队协作、资源管理、时间追踪到进度跟踪等各个方面。下面我将介绍一些项目经理和团队常用的工具,按功能类别进行分类: 1. 任务管理和项目进度跟踪 这些工具帮助团队规划任务、设置优先级,并跟踪任务进度。Trello:基于看板的工具…

IDEA -去除 mapper.xml 中的 SQL 语句黄色下划线

问题描述 当我们使用idea开发java项目时,经常会与数据库打交道,一般在使用mybatis的时候需要写一大堆的mapper.xml以及SQL语句,每当写完SQL语句的时候总是有黄色下划线,看着很不舒服。 解决方案: setting---Editor----Inspections-----SQL 打开后找到图中的两个配置项,去…

项目管理有哪些常用的方法和工具?

在项目管理中,有许多方法和工具可以帮助项目经理有效地规划、执行和控制项目,确保项目按时、按预算和按质量标准完成。以下是一些常用的项目管理方法和工具: 1. 项目管理方法 1.1 瀑布法 (Waterfall)概述:瀑布法是一种传统的项目管理方法,它遵循线性、顺序的流程,每个阶段…

解决goland 导入项目后import里的包报红问题

1.Goland--->Preferences...--->Go--->GOPATH--->Project GOPATH下添加命令行go env下的GOPATH值,自行修改自己的Project GOPATH2.正常情况下我们不需要自己去处理外部包的代理,但是也有可能就是你不经意之间做了修改,这边也是通过setting进行配置:补充:GOLAN…