天梯赛红色警报(连通分量)

团体程序设计天梯赛竞赛题--进阶题【L2-013 红色警报】 进阶级 4 道题,每道题 25 分,满分为 100 分。 阅读详情

战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。

输入格式:

输入在第一行给出两个整数N(0 < N <=500)和M(<=5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路条数。随后M行,每行给出一条通路所连接的两个城市的编号,其间以1个空格分隔。在城市信息之后给出被攻占的信息,即一个正整数K和随后的K个被攻占的城市的编号。

注意:输入保证给出的被攻占的城市编号都是合法的且无重复,但并不保证给出的通路没有重复。

输出格式:

对每个被攻占的城市,如果它会改变整个国家的连通性,则输出“Red Alert: City k is lost!”,其中k是该城市的编号;否则只输出“City k is lost.”即可。如果该国失去了最后一个城市,则增加一行输出“Game Over.”。

一开始把题目想难了,想到关节点算法去了,那个又好复杂,码不出来,但是又想着直接暴力搜索判断连通分量个数怕超时,一直犹豫,本着混分的思想就这样写了。没想到的是,竟然就这么过了。。。 (天梯的数据真有人道主义精神)

若删除一个城市,但是连通数量大于之前的连通数量,那么肯定就导致了原本的连通性被破坏,而如果小于原来的连通量,那只有一种可能,就是删除的那个城市原来就是孤立的城市。 所以直接用简单的DFS类似于染色问题一样求出有多少个连通分量即可,用 pre < now,则发出警报。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;

const int maxn = 500+10;
int G[maxn][maxn];
int n,m;
int vis[maxn]; //标记是否删除 = 1为已删除
int vis2[maxn]; //标记是否访问
void dfs(int x,int color){
    for(int i = 0; i < n; ++i){
        if(G[x][i] != -1 && !vis[i] && !vis2[i]){
            vis2[i] = color;
            dfs(i,color);
        }
    }
}
int main(){
     //freopen("/Users/user/Desktop/in.txt","r",stdin);
    memset(G,-1,sizeof(G));
    scanf("%d%d", &n,&m);
    for(int i = 0; i < m; ++i){
        int f,t; 
        scanf("%d%d", &f,&t);
        G[f][t] = G[t][f] = 1;
    }
    int op;
    int ncity = n;
    int color = 0;
    for(int j = 0; j < n; ++j){
        if(!vis2[j]){ // 未被染色
            color++;
            dfs(j,color);
        }
    }
    scanf("%d", &op);
    for(int i = 0; i < op; ++i){
        memset(vis2,0,sizeof(vis2));
        int city; 
        scanf("%d",&city);
        vis[city] = 1;
        ncity--; // 剩余城市数
        int pre = color; // 记录之前的连通分量
        color = 0;
        for(int j = 0; j < n; ++j){
            if(!vis[j] && !vis2[j]){ // 未被染色并且未被删除
                color++;
                dfs(j,color); 
            }
        }
        bool flag = false;
        if(pre < color) flag = true;
        if(!flag)
            printf("City %d is lost.\n", city);
        else{
            printf("Red Alert: City %d is lost!\n", city);
        }
    }
    if(ncity == 0)
        printf("Game Over.\n");
    return 0;
}
DeepSpeed Zero3 Offload实战:从GCC版本检查到环境配置的完整避坑指南 本文是一份针对DeepSpeed Zero3 Offload部署的完整避坑指南。针对训练中常见的`AttributeError: ‘DeepSpeedCPUAdam‘ object has no attribute ‘ds_opt_adam`报错,文章深入剖析了其根源在于GCC编译器版本过低。指南提供了从系统GCC版本深度探查、安全启用高版本GCC环境,到DeepSpeed一致性安装验证的全链路实战方案,旨在帮助用户构建稳定的大模型训练环境。 阅读详情

相关推荐

硬核拆解华为/大疆/小米硬件面试真题:手撕电路+考点思维导图(附答案)

设计一个增益为20dB、带宽≥100kHz的同相放大器,电源电压±5V,要求输出摆幅≥8V。12位ADC的参考电压2.5V,输入信号1kHz正弦波,峰峰值2V。输入24V转5V/10A的同步降压电路,开关频率500kHz,计算MOSFET的损耗并选择型号(需提供TI官网截图)。设计无人机图传系统,要求1080P@30fps,传输距离2km。FPGA设计中,100MHz时钟域到50MHz时钟域传输32位数据,给出同步方案并画时序图。“设计一个输入12V、输出5V/3A的同步降压电路,给出关键参数计算”

qq_63103361的博客 3534

红色警报 天梯赛 (并查集)

红色警报   战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。 输入格式: 输入在第一行给出两个整数N(0  N \le≤ 500)和M(\le≤ 5000),分别为城市个数(于是默认

Coding 1948

Xilinx DMA IP核心配置与实战解析

本文介绍了Xilinx DMA IP核在直接寄存器模式下的配置与工作流程。DMA通过AXI4-Lite接口接收指令,实现内存与数据流之间的高速传输,无需CPU介入。文章详细说明了开发环境配置、IP参数设置(包括地址位宽、数据宽度等关键参数)以及寄存器操作流程。通过仿真分析,展示了读操作中AXI4接口的突发传输机制,包括地址、长度和突发大小的配置。文中还提供了寄存器地址映射表、信号定义等关键信息,为DMA IP核的应用开发提供了实用参考。

weixin_37688766的博客 884

【PTA】7-39 红色警报

题目重述 战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。 输入格式: 输入在第一行给出两个整数N(0 < N ≤ 500)和M(≤ 5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两...

阳光大男孩!!!的博客 924

Android开发中StateFlow与LiveData的5个关键区别及实战避坑指南

本文深度解析了Android开发中StateFlow与LiveData的5个核心区别,包括设计哲学、生命周期管理、值更新策略、线程模型及协程生态整合。通过实战代码对比,为开发者在现代MVVM架构下的状态管理选型提供清晰的决策指南和避坑建议,帮助构建更健壮、可测试的应用。

weixin_29012677的博客 402

从零构建:毫米波雷达生命信号检测系统的Matlab仿真全流程解析

本文详细解析了毫米波雷达生命信号检测系统的Matlab仿真全流程,涵盖原理、信号处理链路设计及算法优化策略。通过FMCW雷达技术,实现非接触式呼吸心跳信号检测,结合Matlab代码示例展示距离FFT、相位提取与信号分离等关键步骤,为医疗监护和智能家居应用提供实用指南。

weixin_29303701的博客 355

红色警报,战争中保持各个城市间的连通性非常重要。(c++)

题目描述: 战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。 输入格式: 输入在第一行给出两个整数N(0 < N ≤ 500)和M(≤ 5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路条数。随后M行,每行给出一条通路所连接的两个城市的编号,其间以1个空格分隔。在城市信息之后给出

Adyczb的博客 3068

基于模型上下文协议(MCP)的可插拔式临床AI工具链Clinical DS研究(下)

本研究深入探讨了医疗AI在临床落地中的核心矛盾,即如何从“模型能答”迈向“系统可信、可用、可追溯”。为解决此矛盾,我们创新性地提出并详细设计实现了一套基于模型上下文协议(MCP)的**“可插拔式临床AI工具链”**架构。通过将复杂的医疗AI系统解构为Host、MCP Server和标准协议三层,并将各类能力(临床决策、影像分析、合规审计)封装为标准的、可独立演进的Server,我们成功地构建了一个模块化、高内聚、低耦合的系统。

AllenLV的博客 1380

L2-013 红色警报 (25 分)

战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。 输入格式: 输入在第一行给出两个整数N(0 < N ≤ 500)和M(≤ 5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路条数。随后M行,每行给出一条通路所连接的两个城市的编号,其间以1个空格分隔。在城市信息之后给出被攻占的信息,即一

一只懒猫的博客 2469

YOLOv8改进策略【Backbone/主干网络】| 2023 U-Net V2 替换骨干网络,加强细节特征的提取和融合

一、本文介绍 本文记录的是基于U-Net V2的YOLOv8目标检测改进方法研究。本文利用U-Net V2替换YOLOv8的骨干网络,UNet V2通过其独特的语义和细节融合模块(SDI),能够为骨干网络提供更丰富的特征表示。并且其中的注意力模块可以使网络聚焦于图像中与任务相关的区域,增强对关键区域特征的提取,进而提高模型精度。本文配置了原论文中pvt_v2_b0、pvt_v2_b1、pvt_v2_b2、pvt_v2_b3、pvt_v2_b4和pvt_v2_b5六种模型,以满足不同的需求。 文章目录一、本文

Limiiiing的博客 1721

面经-2023-联发科MTK-数字芯片设计

面经-2023-联发科MTK-数字芯片设计

w0shishabi的博客 2944

PTA:7-123 红色警报 (25分)(并查集+解析)

7-123 红色警报 (25分) 战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。 输入格式: 输入在第一行给出两个整数N(0 < N ≤ 500)和M(≤ 5000),分别为城市个数(于是默认城市从...

zlzhujust@gmail.com 3097

手把手教你学Simulink--四翼无人机滑模控制器设计与仿真

四翼无人机(Quadcopter)滑模控制(Sliding Mode Control, SMC)是一种鲁棒性很强的非线性控制方法,特别适用于存在模型不确定性和外部扰动的情况。滑模控制器通过强制系统状态进入并保持在一个预定义的滑模面上,从而实现对期望轨迹或姿态的精确跟踪。在这个教程中,我们将使用MATLAB和Simulink来设计并仿真一个基于滑模控制策略的四翼无人机系统。

MHD0815的博客 184

PTA 天梯赛练习 红色警报(BFS求连通分量)

PTA 天梯赛练习 红色警报(BFS求连通分量) 题目连接 战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。 输入格式: 输入在第一行给出两个整数N(0 &lt; N ≤ 500)和M(≤ 5000...

pqdong的博客 819

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

团体程序设计天梯赛 L2-013 红色警报(连通分量)

分数 25战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。

X_StarX的博客 968

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

L2-013. 红色警报-PAT团体程序设计天梯赛(图的连通分量个数统计)

L2-013. 红色警报 战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。 输入格式: 输入在第一行给出两个整数N(0 注意:输入保证给出的被攻占的城市编号都是合法的且无重复,但并

dingyihui2016的博客 646

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

PTA团体程序设计天梯赛-练习集 L2-013 红色警报(图的连通分量)

战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。 输入格式: 输入在第一行给出两个整数N(0 < N ≤ 500)和M(≤ 5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路条数。随后M行,每行给出一条通路所连接的两个城市的编号,其间以1个空格分隔。在城市信息之后给出被攻占的信息,即一

一粒大榴莲的博客 420

天梯赛L2-13 红色警报-Python语言详细题解

天梯赛L2第13题-红色警报,考察图的连通性,用bfs或者dfs可以完美解决

Ice_cream_0712的博客 332

团体程序设计天梯赛 L2-013 红色警报 (Java)

战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。

weixin_43897853的博客 425

天梯赛L2-013红色警报(并查集计算图的连通分量)

#include <iostream> using namespace std; const int N = 510, M = 5010; int n, m; int f[N]; struct edge{ int a, b; }e[M]; int find(int x) { if(f[x] != x) f[x] = find(f[x]); return f[x]; } int main() { cin >> n >> m; f

Ybibabo__的博客 239

L2-013. 红色警报-PAT团体程序设计天梯赛GPLT(图的连通分量个数统计)

L2-013. 红色警报 战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。 输入格式: 输入在第一行给出两个整数N(0 注意:输入保证给出的被攻占的城市编号都是合法的且无重复,但并不保

柳婼 の blog 3753

天梯赛团体设计L2-013 红色警报

现在的我连算法都判断不出来,,,,,这次做题过程主要是,看题目,不会,感觉像着色问题,但是不是很会下手,总共也就是看了个题目,然后ai看到ai思考过程中有并查集,发现确实好像,最后还是看的dfs,然后开始想看代码理解,,,,好困,,,,,,,,,(~_~)就开始将变量打出来,在前面输入输出打出来,然后看count函数,发现懂了,dfs也就更容易理解了,但是虽然是看ai但没有照抄,出来了一大堆问题,总的来说解决完发现,整体过了4,5遍才过,觉得再打一遍,不看参考,然后就好啦!

ever37的博客 177

天梯赛 L2 红色警报

题目链接:点击打开链接思路:每失去一个城市,判断连通分量是否增加,若增加,则发出红色警报。#include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;iostream&gt; #include &lt;queue&gt; using namespace std; int n,m,map[505][505]; int book[505]...

不忘初心 452

天梯赛L2-013 红色警报

L2-013 红色警报 (25 分) 战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。 输入格式: 输入在第一行给出两个整数N(0 < N ≤ 500)和M(≤ 5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路条数。随后M行,每行给出一条通路所连接的两个城市的编号,其间以1个空格分隔

索辣鲲。 215

红色警报(天梯赛,PTA)

7-9 红色警报(25 分) 战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。 输入格式: 输入在第一行给出两个整数N(0 N ≤ 500)和M(≤ 5000

saber_wtq的博客 4641

天梯赛-L2-1 红色警报 (25 分)

血的教训!! 格式输出一定要直接复制样例!! 红色警报后面竟然是’!’ 不是 ‘.’ 查了好久好久都没看出来 一度怀疑人生 题目很好理解 思路就是 每次攻占一个城市 就把城市相连的标记去掉 然后计算连通分量 如果连通分量增加2及以上,则说明是红色警报 #include <bits/stdc++.h> using namespace std; typedef long long ll; int m, n; int mp[501][501] = {0}; int vis[501] = {0};

sjyisdog的博客 227
上一篇: POJ3320尺取法
下一篇: POJ3468A Simple Problem with Integers(线段树)
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值