7-8 红色警报 (25 分)

本文介绍了一个算法挑战,旨在通过编程解决战争中城市连通性的问题。任务是编写一个程序,当一个城市的丢失导致国家分裂成无法连通的区域时,发出红色警报。文章详细解释了输入输出格式,并提供了示例代码,展示了如何使用深度优先搜索(DFS)来判断国家的连通性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7-8 红色警报 (25 分)

战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的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.

输入样例:

5 4
0 1
1 3
3 0
0 4
5
1 2 0 4 3

输出样例:

City 1 is lost.
City 2 is lost.
Red Alert: City 0 is lost!
City 4 is lost.
City 3 is lost.
Game Over.
#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <math.h>
#include <set>
#include <stack>
using namespace std;

int n,m;
int map[501][501];
bool vis[501];

void dfs(int x){
	
	vis[x] = true;
	for(int i=0;i<n;i++){
		if(!vis[i] && map[x][i]){
			dfs(i);
		}
	}
}

int main(){
	
	ios::sync_with_stdio(false);
	
	memset(map,0,sizeof(map));
	
	cin>>n>>m;
	
	for(int i=0;i<m;i++){
		int u,v;
		cin>>u>>v;
		map[u][v] = map[v][u] = 1;
	}
	
	memset(vis,false,sizeof(vis));
	int size = 0;
	
	for(int i=0;i<n;i++){
		if(!vis[i]){
			dfs(i);
			size++;
		}
	}
	
	int t;
	cin>>t;
	
	for(int i=0;i<t;i++){
		
		for(int j=0;j<n;j++){
			vis[j] = false;
		} 
		
		int a;
		cin>>a;
		
		for(int j=0;j<n;j++){
			map[j][a] = map[a][j] = 0;
		}
		
		int len = 0;
		
		for(int k=0;k<n;k++){
			if(!vis[k]){
//				cout<<"i:"<<i<<endl;
				dfs(k);
				len++;
				
//				cout<<k<<endl;
			}
		}
		
//		cout<<"vis[2]:"<<vis[2]<<endl;
		
//		cout<<len<<" "<<size<<endl;
		
		if(len > size + 1){
			cout<<"Red Alert: City "<<a<<" is lost!"<<endl;
		}
		else{
			cout<<"City "<<a<<" is lost."<<endl;
		}
		
		size = len;
	}
	
	if(t >= n){
		cout<<"Game Over."<<endl;
	}
	
	return 0;
}

 

画面提示词: --- **【漫画推文视频脚本】** **标题**:《重生武神逼校花用脚按摩?真相让全网泪崩!》 **00:00-00:05 爆点开场** ▶镜1:特写镜头(俯视视角) 校花白嫩脚丫踩在肌肉上/惊愕表情特写/足尖悬停三厘米 ▶提示词:"这就是你说的...脚部按摩?"(气泡破碎音效) ▶画外音:"震惊!武神重生竟逼校花做这种事!" **00:06-00:12 记忆闪回** ▶镜2:高速运镜(360度环绕) 漫天血雨/破碎机甲堆成山/独臂武者手持断刀怒啸 ▶提示词:"八境半步武神殒落!"(金属碎裂音效) ▶字幕:他曾是守护亿万人的战神 **00:13-00:18 命运转折** ▶镜3:光影割画面 左侧:按摩床上的清冷校花/颤抖的手指 右侧:时钟倒流特效/记忆碎片重组 ▶提示词:"叮!重生倒计时:4小时59" **00:19-00:25 致命伏笔** ▶镜4:悬疑镜头(鱼眼畸变) 窗外掠过巨大阴影/新闻屏幕闪现红色警报 ▶提示词:"S级警报!风王隼来袭倒计时——"(警报蜂鸣) **00:26-00:33 反套路互动** ▶镜5:动态格漫画 ① 校花擦汗的手部特写 ② 男主突然抓住脚踝(布料褶皱特写) ③ 四目相对时空气波纹特效 ▶提示词:"加钟!用你的武道经脉发力!"(心跳声放大) **00:34-00:42 热血揭秘** ▶镜6:双重曝光画面 表层:暧昧的按摩场景 底层:灵气在少女腿部经络中流动 ▶提示词:"原来他早就看穿...这是失传的《天足通》!" **00:43-00:50 末日倒计时** ▶7:平行蒙太奇剪辑 上方:巨型鹰隼撕裂云层 下方:按摩床下暗格弹出古刀 ▶提示词:"当灭世灾厄遇上重生武神——" **00:51-00:58 高燃收尾** ▶8:慢镜头特写 校花赤足踏碎地砖/男主撕开校服露出战神纹身 ▶提示词:"这一世,换我教你怎么活下去!" **最终弹幕**:"看到最后跪了!这不是普通的按摩!"帮我转化为漫画
最新发布
04-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值