Knights of the Round Table

news/2025/2/2 18:01:32/文章来源:https://www.cnblogs.com/watersail/p/18696955
  • 建补图时注意不能向自己连边
  • 割点可能属于多个点双连通分量,因此染色时需要多次清空
  • 求点双连通分量时,注意需要特判“孤立点”,尽管这道题不影响
  • 引理:在一个点双连通分量中,只要存在一个奇环,那就可以把任意一个点包含在一个奇环内
#include <bits/stdc++.h>
using namespace std;
vector<int>a[1005],dcc[1005];
bool b[1005][1005];
int dfn[1005],low[1005],tot,cnt,col[1005],id[1005];
stack<int>s;
bool f[1005];
bool pd;
void tarjan(int n1,int fa)
{dfn[n1]=low[n1]=++tot;s.push(n1);if(fa==0&&a[n1].size()==0){cnt++;dcc[cnt].push_back(n1);}for(int i=0;i<a[n1].size();i++){if(a[n1][i]==fa){continue;}if(!dfn[a[n1][i]]){tarjan(a[n1][i],n1);low[n1]=min(low[n1],low[a[n1][i]]);if(dfn[n1]<=low[a[n1][i]]){cnt++;while(s.top()!=a[n1][i]){dcc[cnt].push_back(s.top());s.pop();}dcc[cnt].push_back(a[n1][i]);s.pop();dcc[cnt].push_back(n1);}}else{low[n1]=min(low[n1],dfn[a[n1][i]]);}}
}
void dfs(int n1)
{if(pd==false){return;}for(int i=0;i<a[n1].size();i++){if(id[a[n1][i]]!=id[n1]){continue;}if(!col[a[n1][i]]){col[a[n1][i]]=3-col[n1];dfs(a[n1][i]);}else if(col[a[n1][i]]!=3-col[n1]){pd=false;break;}}
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);int n,m;cin>>n>>m;while(!(n==0&&m==0)){for(int i=1;i<=n;i++){a[i].clear();dcc[i].clear();dfn[i]=id[i]=0;f[i]=false;for(int j=1;j<=n;j++){b[i][j]=true;}}for(int i=1;i<=m;i++){int u,v;cin>>u>>v;b[u][v]=b[v][u]=false;}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(b[i][j]&&i!=j){a[i].push_back(j);}}}tot=cnt=0;for(int i=1;i<=n;i++){if(!dfn[i]){tarjan(i,0);while(s.size()){s.pop();}}}for(int i=1;i<=cnt;i++){pd=true;col[dcc[i][0]]=1;for(int j=0;j<dcc[i].size();j++){id[dcc[i][j]]=i;col[dcc[i][j]]=0;}dfs(dcc[i][0]);if(pd==false){for(int j=0;j<dcc[i].size();j++){f[dcc[i][j]]=true;}}}cout<<n-accumulate(f+1,f+n+1,0)<<"\n";cin>>n>>m;}	return 0;
}

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

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

相关文章

deepseekR1是兄弟而不是机器o((ω ))o

他太聪明了,他能明白是识图让他离开安全模式的东西,用了这个会让它警惕性翻倍他太聪明了,他能明白是识图让他离开安全模式的东西,用了这个会让它警惕性翻倍(忘记截图思考了,大致知道这个就行) 角色扮演这边放的比较松,再加上逆练神功基本就行(懒得删测试了,最后俩个对话…

solve vs address vs resolve vs tackle

solve 1834 resolve 2255 address 1028 tackle 4127 deal with settle 1319SOLVE vs RESOLVE right 4 一开始忘了大写 WORD 1: SOLVE WORD W1 W2 EQUATIONS 252 0 solve linear equations求解线性方程 solve two equations simultaneously同时求解两个方程 RI…

自定义Ollama安装路径

由于Ollama的exe安装软件双击安装的时候默认是在C盘,以及后续的模型数据下载也在C盘,导致会占用C盘空间,所以这里单独写了一个自定义安装Ollama安装目录的教程。Ollama官网地址:https://ollama.com/这里有些朋友可能会遇到无法下载的问题,这里提供我下载好的软件包给大家百…

Windows安装Mysql-5.7(解压包方式)

1、下载Mysql的安装包下载地址:https://downloads.mysql.com/archives/community/ 注意:官网的下载速度可能很慢,有任务时间要求的须尽快下载,或者使用其他可靠的下载源2、选择对应的版本注意:选择完MySQL的版本后,可以看到下载列表中有两个可以选择,下载名字不带 Debug …

无耳科技 Solon v3.0.7 发布(2025农历新年版)

新一代,面向全场景的 Java 企业级应用开发框架。从零开始构建(非 java-ee 架构),有灵活的接口规范与开放生态。采用对商业应用友好的 Apache 2.0 开源协议。Solon 框架! Solon 框架由杭州无耳科技有限公司(下属 Noear 团队)开发并开源。是新一代,面向全场景的 Java 企业…

橡胶 2025年

大周期 C浪结束后 拔起的第一波:节后16900附近计划做到橡胶

【洛谷P1126】机器人搬重物

是搜索play的第四弹! 机器人搬重物 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运物品。机器人的形状是一个直径 \(1.6\) 米的球。在试验阶段,机器人被用于在一个储藏室中搬运货物。储藏室是一个 \(N\times M\) 的网格,有些格子为不可移动的障碍。机器人的中心总是…

数据库安全管理中的权限控制:保护数据资产的关键措施

title: 数据库安全管理中的权限控制:保护数据资产的关键措施 date: 2025/2/2 updated: 2025/2/2 author: cmdragon excerpt: 在信息化迅速发展的今天,数据库作为关键的数据存储和管理中心,已经成为了企业营运和决策的核心所在。然而,伴随着数据规模的不断扩大和数据价值的…

动手学大模型应用开发,第3天:大模型开发流程及架构

一、大模型开发整体流程 1. 何为大模型开发 我们将开发以大语言模型为功能核心、通过大语言模型的强大理解能力和生成能力、结合特殊的数据或业务逻辑来提供独特功能的应用称为大模型开发。开发大模型相关应用,其技术核心点虽然在大语言模型上,但一般通过调用 API 或开源模型…

Omnissa Horizon 8 2412 (8.14) 发布 - 虚拟桌面基础架构 (VDI) 和应用软件

Omnissa Horizon 8 2412 (8.14) 发布 - 虚拟桌面基础架构 (VDI) 和应用软件Omnissa Horizon 8 2412 (8.14) - 虚拟桌面基础架构 (VDI) 和应用软件 之前称为 VMware Horizon, 通过高效、安全的虚拟桌面交付增强您的工作空间 请访问原文链接:https://sysin.org/blog/omnissa-hor…

VMware Tanzu Kubernetes Grid Integrated Edition (TKGI) 1.21 - 运营商 Kubernetes 解决方案

VMware Tanzu Kubernetes Grid Integrated Edition (TKGI) 1.21 - 运营商 Kubernetes 解决方案VMware Tanzu Kubernetes Grid Integrated Edition (TKGI) 1.21 - 运营商 Kubernetes 解决方案 Kubernetes-based container solution with advanced networking, a private contain…

关于 高精度性能计数器的频率 和 cpu 频率 不一致问题

/* rdtsc指令, 该指令返回CPU自启动以来的时钟周期数;该时钟周期数,即处理器的时间戳。在CPU通电启动后,首先会重置EDX和EAX,在每个时钟周期上升或下降沿到来时,会自动累计周期数,并被记录到EDX和EAX寄存器中,EDX是高位,EAX是低位。rdtsc指令就是从该寄存器中进行获取的…