【构造】CF1761 E

news2024/11/25 19:46:37

Problem - 1761E - Codeforces

题意:

思路:

 

Code:

#include <bits/stdc++.h>

using i64 = long long;

void solve() {
    int n;
    std::cin >> n;
    
    std::vector g(n, std::vector<int>(n));
    std::vector<int> deg(n);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            char x;
            std::cin >> x;
            g[i][j] = x - '0';
            deg[i] += g[i][j];
        }
    }
    
    std::vector<std::vector<int>> comp;
    
    std::vector<int> vis(n);
    
    for (int i = 0; i < n; i++) {
        if (vis[i]) {
            continue;
        }
        
        std::vector<int> q;
        q.push_back(i);
        vis[i] = 1;
        
        for (int i = 0; i < int(q.size()); i++) {
            int x = q[i];
            
            for (int y = 0; y < n; y++) {
                if (g[x][y] && !vis[y]) {
                    q.push_back(y);
                    vis[y] = 1;
                }
            }
        }
        
        comp.push_back(q);
    }
    
    //第一种情况,只有一个连通分量
    if (comp.size() == 1) {
        std::cout << 0 << "\n";
        return;
    }
    
    for (auto s : comp) {
        //第二种情况,存在一个孤立点
        if (s.size() == 1) {
            std::cout << 1 << "\n";
            std::cout << s[0] + 1 << "\n";
            return;
        }
        //第三种情况,存在一个图为不完全图
        if (deg[s.back()] != int(s.size()) - 1) {
            std::cout << 1 << "\n";
            std::cout << s.back() + 1 << "\n";
            return;
        }
        for (auto x : s) {
            if (deg[x] != int(s.size()) - 1) {
                std::cout << 1 << "\n";
                std::cout << x + 1 << "\n";
                return;
            }
        }
    }
    //第四种情况,存在大于两个完全图
    if (comp.size() > 2) {
        std::cout << 2 << "\n";
        std::cout << comp[0][0] + 1 << " " << comp[1][0] + 1 << "\n";
        return;
    }
    //剩下的情况,只有两个完全图
    if (comp[0].size() > comp[1].size()) {
        std::swap(comp[0], comp[1]);
    }
    
    std::cout << comp[0].size() << "\n";
    for (auto x : comp[0]) {
        std::cout << x + 1 << " \n"[x == comp[0].back()];
    }
}

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int t;
    std::cin >> t;
    
    while (t--) {
        solve();
    }
    
    return 0;
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑xinput1_3.dll丢失的解决方法?哪个解决方法更简单

最近在打开软件或者游戏的时候&#xff0c;电脑提示xinput1_3.dll文件丢失的错误。这个问题导致我无法运行某些游戏和应用程序。通过一番尝试和研究&#xff0c;我找到了一些修复xinput1_3.dll文件丢失的方法&#xff0c;并在此分享给大家。 首先&#xff0c;我了解到xinput1_3…

让音频翻译软件成为你的翻译利器吧

音频翻译功能是现代技术的一大进步&#xff0c;它通过语音识别技术和机器翻译技术&#xff0c;可以将音频文件自动翻译成其他语言的文字&#xff0c;让人们跨越语言障碍进行交流。现在市面上有很多种音频文件翻译软件&#xff0c;每个软件都有其独特的功能和特点。那么&#xf…

【状态模式】拯救if-else堆出来的屎山代码

前言 我想大家平时都在开发重都遇见过屎山代码&#xff0c;这些屎山代码一般都是由于复杂且庞大的if-else造成的&#xff0c;状态模式&#xff0c;是一种很好的优化屎山代码的设计模式&#xff0c;本文将采用两个业务场景的示例来讲解如何使用状态模式拯救屎山代码。 目录 前…

什么是管理的本质?

管理不是一门硬科学。与&#xff08;通常&#xff09;存在正确答案的化学或代数不同&#xff0c;管理是流动的&#xff0c;主观的&#xff0c;并且对于如何运用其原理存在不同的观点。但究竟什么是管理&#xff1f;大多数学者都有相同定义的变体&#xff0c;包括利用资源来实现…

Ubuntu系统搭建socks5代理 Danted SOCKS Proxy

本教程介绍如何在Ubuntu系统中搭建Dated Socks5 代理服务器 更新系统 apt update安装 danted软件 apt install dante-server修改该danted软件的配置文件 vi /etc/danted.conf修改后的内容为下&#xff1a; logoutput: syslog user.privileged: root user.unprivileged: no…

沁恒ch32V208处理器开发(五)复用与重映射

目录 概述实现方法GPIO 及其复用功能AFIO 的寄存器实现 重映射的功能限制 概述 在ch32V2xx系列处理器中&#xff0c;芯片引脚数从28到68不等&#xff0c;分为几个系列&#xff0c;不同型号之间外设资源有差异&#xff0c;所以&#xff0c;引脚复用和重映射功能 也不一样&#…

jmeter获取mysql数据

JDBC Connection Configuration Database URL: jdbc:mysql:// 数据库地址 /库名 JDBC Driver class&#xff1a;com.mysql.jdbc.Driver Username&#xff1a;账号 Password&#xff1a;密码 JDBC Request 字段含义 字段含义 Variable Name Bound to Pool 数据库连接池配置…

分类预测 | MATLAB实现GWO-BiGRU-Attention多输入分类预测

分类预测 | MATLAB实现GWO-BiGRU-Attention多输入分类预测 目录 分类预测 | MATLAB实现GWO-BiGRU-Attention多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.GWO-BiGRU-Attention 数据分类预测程序 2.代码说明&#xff1a;基于灰狼优化算法&#xff08;GW…

这四种订货系统不能选(二):不能独立部署

订货系统在传统批发贸易企业数字化转型中扮演着重要的角色。然而&#xff0c;有一种类型的订货系统并不适合选择&#xff0c;那就是无法独立部署的系统。 无法独立部署的订货系统意味着数据必须存放在软件厂商的服务器上。当我们选择这样的系统时&#xff0c;需要确保系统具备强…

C++11并发与多线程笔记 (1)

C11并发与多线程笔记&#xff08;1&#xff09; 1、并发、进程、线程的基本概念和综述1.1 并发1.2 可执行程序1.3 进程1.4 线程1.5 学习心得 2、并发的实现方法2.1 多进程并发2.2 多线程并发 3、C11新标准线程库 1、并发、进程、线程的基本概念和综述 1.1 并发 指在一个时间段…

Kotlin入门:面向对象编程——04

一、类和对象&#xff1a; 在Kotlin中&#xff0c;使用class关键字定义类&#xff0c;使用object关键字定义对象。类是对象的蓝图&#xff0c;用于描述对象的属性和行为&#xff0c;而对象则是类的一个实例。类可以包含属性&#xff08;成员变量&#xff09;和方法&#xff08…

SpringBoot复习:(47)ConfigFileApplicationListener

它监听ApplicationEnvironmentPreparedEvent和ApplicationPreparedEvent。 它会把配置文件中配置的内容注入到环境中去&#xff0c;配置文件也就生效了

Photoshop快捷键大全

Photoshop是一款非常强大的图像处理软件&#xff0c;它提供了许多快捷键&#xff0c;可以帮助用户更快地完成操作。熟练掌握这些快捷键&#xff0c;可以大大提高工作效率&#xff0c;让您更加专注于创作。 Photoshop快捷键汇总&#xff1a; 一、基本操作快捷键 1. 新建文档…

TX Text Control .NET Server for ASP.NET Crack

TX Text Control .NET Server for ASP.NET Crack TX Text Control.NET Server for ASP.NET是用于Web应用程序或服务的服务器端组件。它是一个完全可编程的ASP.NET文字处理引擎&#xff0c;提供了广泛的文字处理功能。使用TX Text Control.NET Server&#xff0c;程序员可以开发…

day3 TCP/UDP基础模型、多点通信、TCP开发服务器模型

1.多线程中的newfd&#xff0c;能否修改成全局&#xff0c;不行&#xff0c;为什么&#xff1f; 不能。线程之间共享附属进程的所有资源&#xff0c;newfd是全局变量&#xff0c;作用域是全局&#xff0c;一经更改所有线程中的newfd都会变化。 2.多线程中分支线程的newfd能否…

Android 并发编程--阻塞队列和线程池

一、阻塞队列 队列是一种特殊的线性表&#xff0c;特殊之处在于它只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#xff09;进行插入操作&#xff0c;和栈一样&#xff0c;队列是一种操作受限制的线性表。进行插入操作…

TCP消息传输可靠性保证

TCP链接与断开 -- 三次握手&四次挥手 三次握手 TCP 提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好两端之间的准备工作。 所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。在socket编程中&#xff0c;这一…

NLP文本匹配任务Text Matching [无监督训练]:SimCSE、ESimCSE、DiffCSE 项目实践

NLP文本匹配任务Text Matching [无监督训练]&#xff1a;SimCSE、ESimCSE、DiffCSE 项目实践 文本匹配多用于计算两个文本之间的相似度&#xff0c;该示例会基于 ESimCSE 实现一个无监督的文本匹配模型的训练流程。文本匹配多用于计算两段「自然文本」之间的「相似度」。 例如…

【ARM】Day1

作业1&#xff1a;思维导图 作业2&#xff1a; 作业3&#xff1a;用for循环实现1~100之间和5050

【Axure高保真原型】通过输入框动态控制环形图

今天和大家分享通过输入框动态控制环形图的原型模板&#xff0c;在输入框里维护项目数据&#xff0c;可以自动生成对应的环形图&#xff0c;鼠标移入对应扇形&#xff0c;可以查看对应数据。使用也非常方便&#xff0c;只需要修改输入框里的数据&#xff0c;或者复制粘贴文本&a…