首页 > 其他分享 >L2-013 红色警报

L2-013 红色警报

时间:2024-03-15 19:11:25浏览次数:19  
标签:int edges dfs 红色警报 013 L2 510

判断图的连通性三种做法,dfs,bfs,并查集。
本题dfs。edges为可达矩阵,若i能够到达j,则edges[i][j]=1且edges[j][i]=0反之为0,因为是无向图,所以两个都要存。
一开始出了点问题,我在删除那个节点之后,将edges[i][j]置为0,但是没将edges[j][i]=0,郁闷半天...

#include <bits/stdc++.h>
using namespace std;
int visited[510],edges[510][510];//初始都未被访问过
int n,m;
void dfs(int x) {
	for(int i=0; i<n; i++) {
		if(!visited[i]&&edges[x][i]) {
			visited[i]=1;
			dfs(i);
		}
	}
}
int main() {
	cin>>n>>m;
	for(int i=0; i<m; i++) {
		int a,b;
		cin>>a>>b;
		edges[a][b]=1;
		edges[b][a]=1;
	}
	int c=0;//连通图的数量
	for(int i=0; i<n; i++) {
		if(!visited[i]) {
			visited[i]=1;
			dfs(i);
			c++;
		}
	}
	cin>>m;
	int last=c;
	int rest=n;
	for(int i=0; i<m; i++) { //枚举删除的城市
	    rest--;
		memset(visited,0,sizeof(visited));
		c=0;
		int city;
		cin>>city;
		for(int i=0; i<n; i++) {
			edges[city][i]=0;
			edges[i][city]=0;
		}
		for(int i=0; i<n; i++) {
			if(!visited[i]) {
				visited[i]=1;
				dfs(i);
				c++;
			}
		}
		if(c>last+1) {
			cout<<"Red Alert: City "<<city<<" is lost!\n";
		} else {
			cout<<"City "<<city<<" is lost.\n";
		}
		last=c;
		if(rest==0) cout<<"Game Over.";
	}
	return 0;
}

标签:int,edges,dfs,红色警报,013,L2,510
From: https://www.cnblogs.com/chengyiyuki/p/18076079

相关文章

  • L2-3 二叉搜索树的2层结点统计
    L2-3二叉搜索树的2层结点统计分数25作者陈越单位浙江大学二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉......
  • L2-007 家庭房产
    后面每个家族最小编号不知道怎么处理,就没做出来。然后去翻阅blog,发现差不多是两种方案,第一种在融合的时候让编号小的当根节点,那么最终这个家族的祖先就是编号最小的节点。第二种就是融合的时候没处理,到后面处理(看起来好麻烦)。下面就是第一种写法(注:结构体中的id没用,可以删了)。......
  • 【ARMv8】异常级别的定义EL0、EL1、EL2、EL3
    ExceptionlevelsARMv8-A系列定义了一系列的异常等级,从EL0到EL3,下面具体说明其含义:ELn中,随着n的增加,软件的执行权限也相应的增加;EL0被称为无特权执行;EL2提供了对虚拟化的支持EL3提供了安全状态切换功能(安全状态与非安装状态之间的切换)异常级别的切换在AARCH64状态下,异常......
  • [Ynoi2013] 大学
    非常好之\(\texttt{lxl}\)使我的代码旋转。看到这个题,第一反应显然是如果我们能够每次确切的找到要除的数,然后用树状数组进行单点修改,那么就可以达到\(\mathcal{O}(n\logV\logn)\)的复杂度。那么接下来就是考虑如何去找到能除的数。首先,我们不难想到对于每个权值\(v\)......
  • L2-005 集合相似度
    法一(暴力超时21分)纯暴力,最后一个测试点超时。#include<bits/stdc++.h>usingnamespacestd;vector<set<int>>dataset;intmain(){ intn; cin>>n; dataset.resize(n+1);for(inti=1;i<=n;i++){ intcount,data; cin>>count; fo......
  • L2-003 月饼
    背包。#include<bits/stdc++.h>usingnamespacestd;structnode{ doublekc,sj; doubleavg;}s[1010];boolcmp(noden1,noden2){ returnn1.avg>n2.avg;}intmain(){ intn,total; cin>>n>>total; for(inti=0;i<n;i++){ cin>>......
  • 2.4GHz小型超高性能模块:LBEE5XV2EA-802、LBEE5PA1LD-005、LBES5PL2EL-923、LBWA0ZZ2DS
    1、描述:2EA型是一款基于CYW55573组合芯片组的小型超高性能模块,支持Wi-Fi802.11a/b/g/n/AC/ax2×2MIMO蓝牙5.3BR/EDR/le高达1.2Gbps的Wi-FiPHY数据速率和3Mbps的传统蓝牙PHY数据速率(EDR)以及2Mbps的PHY蓝牙LE数据速率。WLAN部分支持PCIe3.0第二代和SDIO3.0接口,蓝牙部分支持......
  • C# EPPlus导出dataset----Excel2绘制图像
    一、生成折线图方法 ///<summary>    ///生成折线图    ///</summary>    ///<paramname="worksheet">sheet页数据</param>    ///<paramname="colcount">总列数</param>    ///<paramname="......
  • L2-002 链表去重(25分)
    代码真的好烂啊。一个元素加入之前,修改集合中(va,vb)最后一个元素的下一个地址为当前元素的地址。然后我是把(元素地址,下一个地址)和(元素的值)拆开放到两个集合了,放一个里面有点麻烦不太会处理。#include<bits/stdc++.h>usingnamespacestd;intvis[10010];//是否已经来过ve......
  • L2-001 紧急救援
    这道题就是在dijkstra的基础上增加了一些东西。代码有参考别人,最后一步的处理很好。#include<bits/stdc++.h>usingnamespacestd;constintmaxv=0x7fffffff;intedges[510][510];//从i到j的长度intdist[510];//最短路径boolcheck[510];//是否在集合之中intnum[510......