IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> PAT_1013 Battle Over Cities (25 分) (dfs求连通分支数) -> 正文阅读

[数据结构与算法]PAT_1013 Battle Over Cities (25 分) (dfs求连通分支数)

题目链接
在这里插入图片描述
在这里插入图片描述

将题目翻译过来就是求去掉某一顶点后的连通分支数-1,因为要保持剩余的城市彼此之间是connected的,只需要在连通分支间添加一条公路即可。

可以用dfs求图的连通分支数,占领一座城市需要将该城市关联的边都要去掉,对dfs的影响其实就是无法访问该顶点关联的边,在dfs之前提前vis[该顶点]=true,这样深度优先搜索的时候遇到该顶点就不会搜他的邻接点,也就相当于去掉了该城市所有关联边的效果。

还有注意一些极端样例比如1 0 1 1,即只有一个城市,且它被侵占,结果应为0,但是按照正常的算法没有顶点访问到res会不变即为初值0,在res-1就会得到-1,因此输出时需要特判一下即可。

比较弱智的是一开始手误将

G[v].push_back(w);
G[w].push_back(v);

写成了

G[v].push_back(w);
G[w].push_back(w);

离谱的是还得了17分,呜呜写代码一定要仔细小心啊

完整代码:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
vector<int> G[1005];
bool vis[1005]={false};
void dfs(int v){
    vis[v]=true;
    for(auto w:G[v]){
        if(!vis[w]){
            dfs(w);
        }
    }
}
int main() {
#ifdef ONLINE_JUDGE
#else
    freopen("1.txt","r",stdin);
#endif
    int N,M,K;
    cin >> N >> M >> K;
    for(int i=0;i<M;i++){
        int v,w;
        cin >> v >> w;
        G[v].push_back(w);
        G[w].push_back(v);
    }
    //采用dfs来求连通分支数
    while(K--){
        int del;
        cin >> del;
        for(int i=1;i<=N;i++)
            vis[i]=false;
        vis[del]=true;//删除这个城市相当于提前访问过了
        int res=0;//统计连通分支数
        for(int i=1;i<=N;i++){
            if(!vis[i]){
                res++;
                dfs(i);
            }
        }
        cout << max(0,res-1) << endl;
    }
    return 0;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 12:27:46  更:2021-08-30 12:28:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:26:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码