• A10131013 Battle Over Cities (25分)


    一、技术总结

    1. 这一题是考查图的知识,题目的意思要理解清楚,就是考查统计图中连通块的数量,也就是没有一个结点后。
    2. 怎么删除该结点,并且统计连通块的数量成为问题解决的关键,这里可以当访问到结点时,直接返回,或则跳过,这种操作就是相当于删除了该结点。
    3. memset(inq, false, sizeof(inq));这个是初始化标记数组,可以用于反复的遍历数组。
    4. 还有这次出现了一个比较简单的问题,就是在写for循环的嵌套时,同时使用了i变量,导致答案错误,这种问题一下又检查不出来,细心点。

    二、参考代码

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 1010;
    vector<int> Adj[maxn];
    bool inq[maxn];
    int node;//need to delete node 
    void DFS(int v){
    	if(v == node) return;
    	inq[v] = true;
    	for(int i = 0; i < Adj[v].size(); i++){
    		int u = Adj[v][i];
    		if(inq[u] == false){
    			DFS(u);
    		}
    	}
    } 
    int main(){
    	int n, m, k;
    	scanf("%d%d%d", &n, &m, &k);
    	int a, b;
    	for(int i = 1; i <= m; i++){
    		scanf("%d %d", &a, &b);
    		Adj[a].push_back(b), Adj[b].push_back(a);
    	}
    	for(int i = 0; i < k; i++){
    		scanf("%d", &node);
            memset(inq, false, sizeof(inq));
    		int sum = 0;
    		for(int j = 1; j <= n; j++){
    			if(j != node && inq[j] == false){
    				DFS(j);
    				sum++;
    			}
    		}
    		printf("%d
    ", sum-1);
    	}
    	return 0; 
    }
    
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    【LeetCode-动态规划】编辑代价
    【C++】使用istringstream分割字符串
    【LeetCode-字符串】简化路径
    【LeetCode-字符串】简化路径
    【LeetCode-并查集】朋友圈
    【LeetCode-背包】目标和
    【LeetCode-动态规划】分割等和子集
    The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes
    【错误解决】本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止
    MySQL解压版安装配置详解
  • 原文地址:https://www.cnblogs.com/tsruixi/p/12374358.html
Copyright © 2020-2023  润新知