首页 > 其他分享 >B - Reversible Cards(树与图的基础)

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

时间:2023-02-07 20:45:46浏览次数:65  
标签:环上 int 基础 edge ++ Reversible ans Cards 2e5

题目

题意

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

思路

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

代码

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;

}

标签:环上,int,基础,edge,++,Reversible,ans,Cards,2e5
From: https://www.cnblogs.com/cfddfc/p/17099752.html

相关文章

  • Docker基础及网络
    目录:云计算的服务模式1、LaaS2、Paas3、Saas最早的虚拟化架构常用的虚拟产品Docker概述容器化优点Docker与虚拟机的区别Docker与open......
  • typescript基础用法
    一、特点TypeScript是添加了类型系统的JavaScript,适用于任何规模的项目。TypeScript是一门静态类型、弱类型的语言。TypeScript是完全兼容JavaScript的,它不会修......
  • node.js的入门基础学习
    nodejs的下载安装node.js官网下载node.js程序Node.js(nodejs.org)nodejs的基础模块的使用nodejs文件需要在对应文件路径的终端(cmd)中打开使用,命令:path>node文件......
  • 物联网勒索软件攻击或成为关键基础设施安全保护的噩梦
    勒索软件攻击仍然是关键基础设施部门和运营技术(OT)环境的噩梦。近日,一种称为物联网勒索软件或R4IoT方法的新攻击浮出水面。概念验证(PoC)揭示了网络犯罪分子日益复杂的行......
  • vue3+ts基础使用
    详见:vue官方文档响应式数据<scriptsetuplang="ts">import{ref,reactive,computed}from"vue";importtype{Ref}from"vue";//ref//可通过Ref或......
  • Linux基础第一章:基础知识与基础命令
    一、虚拟机网络环境-网卡三种连接方式桥接模式:虚拟机和本机使用同一个物理网卡,共享主机IP地址nat模式:内外网地址转换,生成一个VMware8网卡,此网卡必须与虚拟机在同一个网段,......
  • 物联网勒索软件攻击或成为关键基础设施安全保护的噩梦
    勒索软件攻击仍然是关键基础设施部门和运营技术(OT)环境的噩梦。近日,一种称为物联网勒索软件或R4IoT方法的新攻击浮出水面。概念验证(PoC)揭示了网络犯罪分子日益复杂的......
  • GStreamer基础教程13 - 调试Pipeline
    摘要在很多情况下,我们需要对GStreamer创建的Pipeline进行调试,来了解其运行机制以解决所遇到的问题。为此,GStreamer提供了相应的调试机制,方便我们快速定位问题。 查......
  • 2023牛客寒假算法基础集训营5 A-L
    比赛链接A题解知识点:前缀和,二分。找到小于等于\(x\)的最后一个物品,往前取\(k\)个即可,用前缀和查询。时间复杂度\(O(n+q\logn)\)空间复杂度\(O(n)\)代码#i......
  • GStreamer基础教程01 - Hello World
    摘要在面对一个新的软件库时,第一步通常实现一个“helloworld”程序,来了解库的用法。对于GStreamer,我们可以实现一个极简的播放器,来了解GStreamer的使用。 环境配置为......