题解:将问题转化成连通分量。每次失去一座城市,切断其所有的边,算一次现在的连通分量。若增量大于1,则发出警报。

    至于如何算连通分量,直接用tarjan模板

坑://我昨天晚上半夜敲的模板,把一个算所有环中最短环的tarjan模板 直接贴上去了,一直不过,还XJB改了会儿233(现在90行的代码逛逛B站随便改改就ac了2333)

 #define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<queue>
#include<map>
#include<cmath>
#include<stack>
#include<string.h>
#include<set>
using namespace std;
const int maxn = + ;
vector<int> E[maxn];
int dfn[maxn], low[maxn], tot, n, ans =, vis[maxn];
stack<int> S;
void init() {
for (int i = ; i < maxn; i++) vis[i] = dfn[i] = low[i] = ;
tot = ;
ans = ;
}
void tarjan(int x) {
low[x] = dfn[x] = ++tot;
S.push(x); vis[x] = ;
for (int i = ; i < E[x].size(); i++) {
int v = E[x][i];
if (!dfn[v]) {
tarjan(v);
low[x] = min(low[x], low[v]); }
else if (vis[x]) {
low[x] = min(low[x], dfn[v]);
}
}
if (low[x] == dfn[x]) {
//int cnt = 0;
while () {
int now = S.top();
S.pop();
vis[x] = ;
//cnt++;
if (now == x)break;
}
ans++;
//if (cnt > 1)ans = min(ans, cnt);
}
}
set<int> st[maxn];
int main() {
int m;
cin >> n >> m;
for (int i = ; i < n; i++)E[i].push_back(i);
for (int i = ; i <= m; i++) {
int x, y;
scanf("%d%d", &x, &y);//判重??没用
if (st[x].count(y) == ) { E[x].push_back(y); st[x].insert(y); }
if (st[y].count(x) == ) { E[y].push_back(x); st[y].insert(x); }
//E[y].push_back(x);
}
//n500m5000
for (int i = ; i <= n; i++) {
if (!dfn[i])tarjan(i);
}
int last = ans;
int q; cin >> q; for (int j = ; j <= q; j++) {
int x; cin >> x;
int ok = ;
for (int i = ; i < E[x].size(); i++) {
int v = E[x][i];
// for (auto t : E[v]) if (t == x)t = -1;//强行去除反向边。
for (vector<int>::iterator it = E[v].begin(); it != E[v].end(); it++)if (*it == x) { E[v].erase(it); break; }
} E[x].clear();
E[x].push_back(x);
init();
//cout << last<< endl;
for (int i = ; i <= n; i++) {
if (!dfn[i])tarjan(i);
}
if (ans > last + ) ok = ;
last = ans;
if (ok)printf("Red Alert: City %d is lost!\n", x);
else printf("City %d is lost.\n", x);
}
//cout << ans << endl;
if (q == n)cout << "Game Over.";
system("pause");
}

CCCC L2-013. 红色警报 连通分量的更多相关文章

  1. CCCC 红色警报

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

  2. PAT天梯赛练习题 L2-013 红色警报(并查集+逆序加边)

    L2-013. 红色警报 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 战争中保持各个城市间的连通性非常重要.本题要求你编写一 ...

  3. 天梯赛决赛 L2-1.红色警报 并查集

    L2-013. 红色警报 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 战争中保持各个城市间的连通性非常重要.本题要求你编写一 ...

  4. L2-013 红色警报 (25 分) (并查集)

    链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805063963230208 题目: 战争中保持各个城市间的连通性非 ...

  5. L2-013 红色警报 (25 分)

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

  6. PAT L2-013 红色警报

    https://pintia.cn/problem-sets/994805046380707840/problems/994805063963230208 战争中保持各个城市间的连通性非常重要.本题要 ...

  7. L2-013. 红色警报(并查集)*

    L2-013. 红色警报 参考博客 #include <cstdio> #include <algorithm> #include <iostream> #incl ...

  8. Struts2漏洞拉响网站安全红色警报以及把Struts2更新为最新版本Struts2.3.15.1步骤

    360网站安全检测平台今日发布红色警报称,广泛应用在国内大型网站系统的Struts2框架正在遭到黑客猛烈攻击.利用Struts2“命令执行漏洞”,黑客可轻易获得网站服务器ROOT权限.执行任意命令,从 ...

  9. PAT L2-013 红色警报(并查集求连通子图)

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

随机推荐

  1. 【剑指Offer学习】【面试题23:从上往下打印二叉树】

    题目:从上往下打印出二叉树的每一个结点,同一层的结点依照从左向右的顺序打印. 二叉树结点的定义: public static class BinaryTreeNode { int value; Bin ...

  2. 在CentOS Linux下部署Activemq 5

    准备:安装之前首先安装jdk-1.7.x及以上版本 配置/etc/sysconfig/network文件 和/etc/hosts文件,把主机名的解析做清楚: 如: # cat /etc/sysconf ...

  3. 【django】Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。

    问题描述:启动django服务时出现“Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试.”的错误 问题原因:8000端口被占用了 解决办法:默认启动的 ...

  4. Struts2(三)配置详解

    一.概述 Struts2提供了多种可选的配置文件形式. 其中,struts-default.xml和default.properties是框架级别的配置文件,这两个文件在Struts的核心JAR包中, ...

  5. 怎么安装WinXP和Win7双系统

    本文介绍一下如何安装Windows XP和Windows 7双系统以及启动菜单问题的常用修复方法,推荐安装win7和xp双系统时最好采用从低版本到高版本的顺序进行,一般是XP下安装win7,另本文已假 ...

  6. springboot---->springboot中的类型转换(一)

    这里面我们简单的学习一下springboot中关于类型转换器的使用.人世间的事情莫过于此,用一个瞬间来喜欢一样东西,然后用多年的时间来慢慢拷问自己为什么会喜欢这样东西. springboot中的类型转 ...

  7. css3整理--box-shadow

    box-shadow语法:(想法:用阴影来做边框,就不会出现动态改变边框宽度而产生的重排问题) 对象选择器{box-shadow:投影方式 X轴偏移量 Y轴偏移量 阴影模糊半径 阴影扩展半径 阴影颜色 ...

  8. 原生js--cookie操作的封装

    封装cookie的操作:查询cookie个数.查询所有cookie的键.获取cookie.设置cookie.删除cookie.清除全部cookie /** * cookieStorage */func ...

  9. 查看JVM使用的默认的垃圾收集器

    一.查看步骤 cmd执行命令: java -XX:+PrintCommandLineFlags -version 输出如下(举例): 针对上述的-XX:UseParallelGC,这边我们引用< ...

  10. Python中的str与bytes之间的转换的三种方法

    # bytes object b = b"example" # str object s = "example" # str to bytes sb = byt ...