B - Reversible Cards(树与图的基础)

简介: B - Reversible Cards(树与图的基础)

题目

题意

  • 输入 n(≤2e5) 和一个 n 行 2 列的矩阵,矩阵元素范围 [1,4e5]
  • 从每行中恰好选一个数,最多能选出多少个不同的数

思路

  • 从图的方向去思考
  • 建图,发现环上的点所有都可以取到
  • 分支上的点,可以通过在拓扑排序的时候,计算出边得数量(即环外点的数量),这些点也是可以取到的
  • 但是,如果一个连通块是无环的(是一棵树),那么这颗树的顶点不被取到
  • 于是做法分两步
  • 拓扑找环,同时把度数不为0的点插入(恰好把一棵树的顶点忽略)答案集合
  • 环上所有点(度数大于1),插入答案集合

代码

ini

复制代码

const int N = 2e5+10,M = 2*N;
vector<int> edge[M];
int d[M];
void solve() 
{
    int n;cin >> n;
    for(int i = 0;i < n;i ++)
    {
        int a,b;cin >> a >> b;
        edge[a].push_back(b);
        edge[b].push_back(a);
        d[a] ++;
        d[b] ++;
    }
    set<int> ans ;
    queue<int> q;
    for(int i = 1;i <= 400000;i ++)if(d[i] == 1)q.push(i);
    while(q.size())
    {
        int u = q.front();q.pop();
        for(auto v:edge[u])
        {
            d[v] --;
            if(d[v] == 1)q.push(v);
            if(d[u] > 0)ans.insert(u);
        }
    }
    for(int i = 1;i <= 400000;i ++)if(d[i] > 1)ans.insert(i);
    cout << ans.size() << endl;
}


相关文章
|
3月前
|
Kubernetes Devops 应用服务中间件
基于 Azure DevOps 与阿里云 ACK 构建企业级 CI/CD 流水线
本文介绍如何结合阿里云 ACK 与 Azure DevOps 搭建自动化部署流程,涵盖集群创建、流水线配置、应用部署与公网暴露,助力企业高效落地云原生 DevOps 实践。
349 1
|
机器学习/深度学习 人工智能 达摩院
ModelScope 社区介绍和操作入门| 学习笔记
快速学习 ModelScope 社区介绍和操作入门
ModelScope 社区介绍和操作入门| 学习笔记
|
5月前
|
人工智能 缓存 监控
MCP工具开发实战:打造智能体的"超能力"
作为一名深耕AI技术领域多年的博主摘星,我深刻认识到工具(Tools)在现代智能体系统中的核心地位。在Anthropic推出的Model Context Protocol(MCP)框架下,工具不再是简单的功能模块,而是赋予AI智能体真正"超能力"的关键组件。通过深入研究MCP工具开发的各个层面,我发现这一技术正在重新定义人机交互的边界。MCP工具开发不仅仅是编写几个函数那么简单,它涉及复杂的参数验证机制、精密的错误处理策略、高效的异步调用模式,以及优雅的工具组合设计。在实际项目中,我见证了许多开发者因为缺乏对MCP工具设计原则的深入理解,导致开发出的工具要么性能低下,要么稳定性差,要么无法与其
330 0
MCP工具开发实战:打造智能体的"超能力"
|
10月前
|
机器学习/深度学习 数据可视化 网络架构
YOLOv11改进策略【SPPF】| NeuralPS-2022 Focal Modulation : 使用焦点调制模块优化空间金字塔池化SPPF
YOLOv11改进策略【SPPF】| NeuralPS-2022 Focal Modulation : 使用焦点调制模块优化空间金字塔池化SPPF
341 14
YOLOv11改进策略【SPPF】| NeuralPS-2022 Focal Modulation : 使用焦点调制模块优化空间金字塔池化SPPF
|
算法 C语言 Windows
C语言实现2048游戏(Windows版)
C语言实现2048游戏(Windows版)
|
运维 监控 测试技术
Arbitrum(ARB链)公链智能合约系统开发方案逻辑/成熟技术/方案项目/源码出售
Arbitrum(ARB链)是一种二级扩展解决方案,用于构建可扩展、低费用的区块链应用。
|
移动开发 小程序 JavaScript
uniapp下拉刷新
uniapp下拉刷新
369 0
|
网络安全 Android开发
Fiddler连接手机无网络问题
苹果手机连接fiddler,访问一直没有网络,踩过的大坑,特此记录!
803 0
|
前端开发 PHP
web开发HTML生成PDF的三种解决方案(服务器端mpdf、html2canvas.js、浏览器打印、PDF虚拟打印机)
web开发HTML生成PDF的三种解决方案(服务器端mpdf、html2canvas.js、浏览器打印、PDF虚拟打印机)
2277 0