[PAT甲级]1013. Battle Over Cities (25)(图的遍历,统计强连通分量个数)

如何在 Ubuntu 24.04 或 22.04 上安装和使用 GDebi 本文介绍了在Ubuntu 24.04上安装和使用GDebi的方法。GDebi是DPKG的轻量级替代品,能够自动解析并安装.deb包的依赖项。文章详细说明了系统更新、安装GDebi的步骤,并演示了通过GUI和CLI两种方式安装.deb包的操作流程。此外,还提供了验证安装和卸载包的方法。GDebi虽然非必需,但为用户提供了处理依赖项的另一种选择,适合需要安装本地Debian包的用户。 阅读详情

1013. Battle Over Cities (25)

原题链接
It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We must know immediately if we need to repair any other highways to keep the rest of the cities connected. Given the map of cities which have all the remaining highways marked, you are supposed to tell the number of highways need to be repaired, quickly.

For example, if we have 3 cities and 2 highways connecting city1-city2 and city1-city3. Then if city1 is occupied by the enemy, we must have 1 highway repaired, that is the highway city2-city3.

Input

Each input file contains one test case. Each case starts with a line containing 3 numbers N (<1000), M and K, which are the total number of cities, the number of remaining highways, and the number of cities to be checked, respectively. Then M lines follow, each describes a highway by 2 integers, which are the numbers of the cities the highway connects. The cities are numbered from 1 to N. Finally there is a line containing K numbers, which represent the cities we concern.

Output

For each of the K cities, output in a line the number of highways need to be repaired if that city is lost.

Sample Input

3 2 3
1 2
1 3
1 2 3

Sample Output

1
0
0

题目大意:

  • 给出n个城市,城市间有m条路,k个要检查的城市
  • 假如这k个城市被攻占,所有相关的路线全部瘫痪,要使其他城市保持连通,至少需要修缮多少条路

    思路:

  • 其实这是考察图的问题,删除图的一个节点,是其他节点成为连通图,至少需要添加多少条线

  • 添加最少的路线,就是连通分量数-1(例:n个互相独立的连通分量组成一个连通图,只需要连n-1条线就可以)
  • 这道题最重要就是求除去图的一个节点后 剩余的连通分量的数目
  • 利用邻接矩阵v存储路线,用visit数组表示城市是否被遍历过
  • 对于每个被占领的城市,将其表示为遍历过的状态true即可
  • 利用深度优先遍历dfs计算连通分量数目

代码:

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int v[1001][1001];//记录连通路线 默认为0 不连通
bool visit[1001];//记录是否遍历过
int n;//n个城市
void dfs(int node){
    visit[node] = true;
    for(int i=1; i<=n; i++){
        if(visit[i]==false && v[node][i] == 1){
            dfs(i);
        }
    }
}
int main()
{
    int m, k, a, b;//m条路 k个要检查的城市 ab为路线起点终点
    scanf("%d%d%d", &n, &m, &k);
    for(int i=0; i<m; i++){
        scanf("%d%d", &a, &b);
        v[a][b] = 1;
        v[b][a] = 1;
    }
    for(int i=0; i<k; i++){
        fill(visit, visit+1001, false);//重置visit 所有城市未被遍历
        int temp = 0;
        scanf("%d", &temp);
        visit[temp] = true;//被攻占的城市,标记为true
        int cnt = 0;//记录连通分量
        for(int j=1; j<=n; j++){
            if(visit[j] == false){
                dfs(j);
                cnt++;//连通分量+1
            }
        }
        printf("%d\n", cnt-1);//思路第二条
    }
    return 0;
}
从零搭建《火影忍者》手游服务端:Linux环境部署与全流程实战 游戏服务器后端开发是构建大型多人在线体验的核心技术,其原理涉及高并发网络通信、分布式系统架构与数据一致性保障。在技术价值上,一套稳定高效的服务端不仅能支撑海量玩家实时交互,更是游戏业务逻辑、经济系统和安全防线的基石。典型的应用场景包括MMORPG、回合制卡牌、SLG等中重度手游。本文以《火影忍者》IP的横版卡牌回合制手游为例,聚焦于**手工服务端**的完整搭建过程,详细拆解从Linux系统初始化、MySQL与**Redis**缓存部署、核心服务编译、到代理后台联调的全链路实践,为开发者深入理解游戏后端架构提 阅读详情

相关推荐

离线路径规划服务Graphhopper

离线路径规划服务Graphhopper 本文主要探索使用Graphhopper搭建离线路径规划服务,需要掌握一定的JAVA基础环境配置的知识 文章目录离线路径规划服务Graphhopper前言一、Graphhopper是什么?二、使用步骤1.下载Graphhopper2.从OpenStreetMap下载路图数据3.安装Graphhopper所需环境4.修改配置5.启动Graphhopper总结 前言 在外网环境中可以使用百度、高德等第三方的sdk用以实现路径规划的功能,由于项目的需要,在离线环境中需要使

Sysdark的博客 7561

1013 Battle Over Cities (25 分)(测试点2)

1013 Battle Over Cities (25 分) 题目链接 算法分析 最终采用了DFS求连通分量数目,然后减去一的值即为题目答案。 测试点 我卡在测试点二好久,上网看到有的人用并查集也出现了测试点二卡住的情况,测试点二应该是一个这样的问题——是否有重复合并的情况,我修改了好久我最初思路的代码,最后也没通过(如果使用并查集来处理,应该不会出现这样的情况) 错误代码1 #include<bits/stdc++.h> using namespace std; #define N 50000

qq_34771124的博客 640

ACT代码梳理:新手学具身智能,不需要学会一堆理论,先跑起来再说

我是一个刚接触具身智能的小白。第一次看 ACT 项目,什么 Transformer、VAE、Mujoco、rollout,全是天书。但我没打算先把理论补完。太难,也太慢。我的策略是:直接上手,边做边学,卡在哪就学到哪。这篇文章是我的第一站——带你一起看懂 ACT 项目的整体架构,了解它的核心模块和流程。开始前,我列了 本文出现的18 个关键词,是我一开始完全搞不懂的。你可以先扫一眼,如果不认识的超过 10 个,那我们就是同路人,可以放心往下看了。

qq_17405041的博客 1210

PAT-ADVANCED1013——Battle Over Cities

我的PAT-ADVANCED代码仓:https://github.com/617076674/PAT-ADVANCED 原题链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805500414115840 题目描述: 题目翻译: 1013 城市之间的战争 在战争中,所有的城市都通过高速公路连接在一起,这一...

清风阁 1822

AU混响终极指南:从‘干声’到‘空间感’,用总音轨和发送技巧打造专业人声

本文详细介绍了如何在Adobe Audition(AU)中使用混响效果器,通过总音轨和发送技巧将‘干声’转化为具有专业‘空间感’的人声。从混响基础原理到总线架构设置,再到精细控制和自动化调整,全面解析了提升音频质量的实用技巧,适用于音乐制作、播客和内容创作。

weixin_30512089的博客 333

Nuclei漏洞扫描:从零到精通的Windows实战指南

本文详细介绍了Nuclei漏洞扫描工具在Windows平台上的安装与使用教程,从基础安装到高级实战技巧全面覆盖。通过具体案例展示如何利用Nuclei的模板库快速检测常见漏洞,并提供自定义POC开发指南,帮助安全从业者高效开展漏洞扫描工作。

weixin_28683689的博客 250

1013 Battle Over Cities

题目来源:PAT (Advanced Level) Practice It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We must know immediately if we need to repair any othe

weixin_51032998的博客 157

DAC8568实战指南:如何用STM32实现8通道DAC精准控制(附代码)

本文提供DAC8568与STM32结合的实战指南,详细解析8通道16位DAC的精准控制方法。内容涵盖硬件连接、SPI配置、驱动层构建、时序调试及多通道同步输出等关键步骤,并附有经过验证的HAL库驱动代码,帮助工程师快速解决实际项目中的通信与输出稳定性问题。

weixin_29175469的博客 746

pat 甲级 1013 Battle Over Cities

并查集的路径压缩:路径为压缩之前如图1,我们调用find(4),因为(4!=p[4]) 执行p[4]=find(p[4]);递归调用直到p[x]==x,由于p[1]=1,故返回1。此时变成图2,最终会变成图3。则下次查询祖宗时,效率会大大提升。这道题的输出结果是如果那座城市失守,那么需要修复的公路数量。我们将连通的城市看出一个集合。那么需要修复的公路数量就是集合的数量-1(连通 n个点最少需要n-1)。而集合的合并以及确定集合的数量,可以使用并查集。

weixin_50671259的博客 711

【目标检测】全局上下文感知的详解

目标检测中的全局上下文感知(Global Context Awareness)​是指模型在定位和识别目标时,能够有效利用图像中全局或大范围的上下文信息(如场景语义、目标间关系、空间布局等),而不仅仅依赖局部特征。这种能力显著提升了检测的鲁棒性,尤其是在复杂场景(如遮挡、小目标、密集目标)中表现突出。

浩瀚之水的专栏 650

把 ABAP Smart Form 输出变成可直接下载的 PDF 二进制:OTF 到 XSTRING 的一条龙实践

SAP Smart Forms 生成 PDF 的实用方案:通过 OTF 格式转换实现高效输出。Smart Forms 本身不直接生成 PDF,而是输出 OTF 格式数据,需通过 CONVERT_OTF 函数转换。本文提供两种实现路径:传统的 Spool 方式和更优的直接获取 OTF 方式,后者避免了 Spool 的维护负担。核心代码演示了如何通过设置 GETOTF 参数获取 OTF 数据,并转换为 PDF 二进制流,适用于前端下载、接口传输等场景。同时介绍了 SSF_OPEN/SSF_CLOSE 方法用于批

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 676

PAT甲级真题 1013 Battle Over Cities (25分) C++实现(基于Kruskal算法思想,分支标记法)

题目 思路 对于一个包含n个节点的图,将其连通且无回路,最少需要n-1条边。题目求剩下n-1个城市需要添加几条边能连通,只需计算出它们之间已有的无回路边数count,剩下的就是需要添加的。 基于Kruskal算法思想,逐个考察添加每条边后(不考虑被围困城市的),是否会形成回路。利用数组find标记分支的代表元素,find[i]就是节点i的连通分支标记。这里统一将节点号最小的最为代表元素。若不形成回...

zhang35的博客 511

笔试题-2023-思特威-数字电路设计(CIS)【纯净题目版】

10 笔试题-2023-思特威-数字电路设计(CIS)【纯净题目版】

w0shishabi的博客 1472

PAT 甲级 1013 Battle Over Cities (25 分)(图的遍历,统计强连通分量个数,bfs,一遍就ac啦)...

1013Battle Over Cities(25分) It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are...

蔡军帅 317

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

1013. Battle Over Cities (25)-PAT甲级真题(图的遍历,统计强连通分量的个数,dfs)

1013. Battle Over Cities (25) It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We

柳婼 の blog 3028

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

PAT甲级1013 Battle Over Cities (25 分)题解

\quad这个题意思是求图中去除一个点后连通分量是多少。我们暴力遍历,对于每一次失去的点q,在dfs遍历过程中遇到这个点就返回,统计图的连通分量个数。设断开一个点后图连通分量个数为n(包含断开的那个点单独算作一个连通分量),那么只需要修n-2条路即可。 #include <iostream> #include <vector> #include <cstring&gt...

qq_40438165的博客 1157

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

1013 Battle Over Cities (25 分)

PAT (Advanced Level) Practice 笔记 记录做PAT (Advanced Level) Practice时遇到的坑和总结 文章目录PAT (Advanced Level) Practice 笔记一、描述二、题目链接三、代码1.AC3.学习四、总结 一、描述 删除图的某个节点,求联通分量的个数 二、题目链接 1013 Battle Over Cities (25 分) 三、代码 1.AC #include <iostream> using namespace st

weixin_52812620的博客 341

PAT甲级 1013 Battle Over Cities (25分)

1013 Battle Over Cities (25分) 题目链接:PAT A 1013 思路分析:就是去掉某一个城市以及和它相连的所有边,问添加几条边才能把剩下的城市连接在一起。实际上就是找连通图的问题,如果一个图完全连通,那么需要0条边,如果有两个连通图,那么需要一条边,三个连通图则需要两条边,以此类推~所以本质还是图的遍历问题。在DFS遍历中,如果一个图完全连通,则只需要遍历一次,否则则...

weixin_43684054的博客 246

PAT甲级1013 Battle Over Cities:[C++题解]并查集、结构体存边

刷题

阿正的梦工坊 544

图论 - PAT甲级 1013 Battle Over Cities C++

PAT甲级 1013 Battle Over Cities C++ It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are cl...

weixin_30955341的博客 159

PAT甲级1013 Battle Over Cities

题意,给定 n 个点,由 m 条无向边连接。现在,指定一个点删除,同时删除该点的邻边。问,余下的点最少要补多少条边才能够连通。 既然是连通性问题,就上并查集吧。先把边存下来(因为有 k 个 case),对于每个 case,遍历边集,将未被删除的边的两端加入并查集。遍历完成后,检查该并查集有多少个根(也就有多少个连通块)。由于用一条边就可将两个点连接起来,所以需要的边的数量是根数-1。 我用的 cin,第一发第五个点 t 了,关了同步后 ac。 另外,本题还可以用 dfs/bfs 做,就不写了。总之,思

坤斤拷的博客 774

PTA_PAT甲级_1013 Battle Over Cities (25分)

It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We must know immediately if we nee...

hqy的草稿本 304

PAT甲级 1013 Battle Over Cities (25) 统计连通图的个数

参考链接:https://www.liuchuo.net/archives/2346 It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city ar...

qq_29762941的博客 224

PAT 甲级 1013 Battle Over Cities

It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed.

m0_61974219的博客 292

[PAT-A 1013]Battle Over Cities

考察图的遍历DFS 题目大意: 给出一个无向图,并规定删除图中某个顶点的时候,会同时把与之连接的边一起删除 给出K个查询,每个查询给出一个欲删除的顶点编号,求删除该顶点后需要增加多少条边,才能是图变为连通 思路: 1.题目本质上是在问对一个图需要至少添加几条边才能使其变为连通图,而最少添加的边数等于图的连通块的个数-1,所以等价于求图的连通块个数减一。 2.求连通块的个数可以用DFS遍历,即将v...

RegulusF的博客 211

【PAT】1013. Battle Over Cities (25)

题目描述: It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We must know immediately if...

tjj1998的博客 263
上一篇: [PAT甲级]1012. The Best Rank (25)(最好排名)
下一篇: [PAT甲级]1014. Waiting in Line (30)(银行排队办理业务结束时间 队列的应用)
whl_program
博客等级 码龄11年 101粉丝 279原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值