当前位置: 首页 > news >正文

二染色,CF 1594D - The Number of Imposters

目录

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

二、解题报告

1、思路分析

2、复杂度

3、代码详解


一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

1594D - The Number of Imposters

二、解题报告

1、思路分析

并查集,扩展域并查集,带边权并查集详解,OJ练习,详细代码_拓展域并查集-CSDN博客

一眼类似于扩展域并查集可解决的问题

这个题就是在玩太空狼人杀

好人不说谎,坏人不吐真

A说B是坏人,那么A、B一定是不同阵营的

A说B是好人,那么A、B一定是同一阵营的

这是简单的数理逻辑

那么我们可以根据关系建图,从而二染色

我们并不关注哪个颜色是好人,我们对每个连通块选取颜色最多的那个作为坏人的数目即可

具体实现:

相同阵营,说明颜色相同,边权为0,传颜色传c ^ 0

不同阵营,说明颜色不同,边权为1,传颜色传c ^ 1

另:py递归爆内存,用栈来递归

2、复杂度

时间复杂度: O(N + M)空间复杂度:O(N + M)

3、代码详解

 ​
import sys
from math import infinput = lambda: sys.stdin.readline().strip()
MII = lambda: map(int, input().split())
LMI = lambda: list(map(int, input().split()))
LI = lambda: list(input())
II = lambda: int(input())
fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
P = 10**9 + 7def solve():n, m = MII()g = [[] for _ in range(n)]for _ in range(m):a, b, s = input().split()a, b = map(int, [a, b])a -= 1b -= 1w = 1 if s[0] == 'i' else 0g[a].append([b, w])g[b].append([a, w])color = [-1] * ncnt = [0, 0]def dfs(x: int, y: int) -> bool:stk = [x]color[x] = ycnt[y] += 1while stk:u = stk[-1]stk.pop()c = color[u]for v, w in g[u]:if ~color[v] and color[v] != c ^ w:return  Falseelif color[v] == -1:stk.append(v)color[v] = c ^ wcnt[c ^ w] += 1return Trueres = 0for i in range(n):if ~color[i]:continuecnt = [0, 0]if not dfs(i, 0):print(-1)returnres += fmax(cnt[0], cnt[1])print(res)if __name__ == "__main__":T = 1T = II()for _ in range(T):solve()

http://www.lryc.cn/news/402788.html

相关文章:

  • Go语言并发编程-Channel通信_2
  • Richteck立锜科技电源管理芯片简介及器件选择指南
  • Socket 简介与 Java Socket 编程示例
  • 跟着操作,解决iPhone怎么清理内存难题
  • React、Vue的password输入框组件,如何关闭自动填充?
  • HTML+JS+CSS计算练习
  • 设计模式使用场景实现示例及优缺点(行为型模式——责任链模式)
  • CSS-1_0 CSS和文档流
  • 小程序图片下载保存方法,图片源文件保存!
  • 新书速览|深入理解Hive:从基础到高阶:视频教学版
  • 钡铼Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP、OPC UA分布式IO系统BL20X系列耦合器
  • Git分支合并以及分支部分合并 提交记录合并
  • IDEA关联数据库
  • 【Leetcode】14. 最长公共前缀
  • 【BUG】已解决:zipfile.BadZipFile: File is not a zip file
  • 小白新手搭建个人网盘
  • NineData全面支持PostgreSQL可视化表结构设计
  • 从系统层面认识Linux及mysql中的多表查询
  • PCB(印制电路板)制造涉及的常规设备
  • 《Windows API每日一练》10.3 公用对话框
  • C++中的引用
  • 【自学安全防御】三、企业双机热备和带宽管理的综合实验
  • 无极与有极电容的区别
  • 入坑树莓派(2)——树莓派4B与手机蓝牙通信
  • RocketMQ单结点安装/Dashboard安装
  • 【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第二篇 Linux系统编程篇-第三十四章 进程基础
  • 使用LVS+NGinx+Netty实现数据接入
  • 云手机结合自主ADB命令接口 提升海外营销效率
  • 【计算机视觉前沿研究 热点 顶会】CVPR 2024中与域适应、分布外目标检测相关的论文
  • 首次由国产8K摄像机服务巴黎奥运会8K公用信号