A5740 | 「SDOI2018」战略游戏
时间限制10s
内存限制512MB
通过 / 提交0/0
题目描述
省选临近,放飞自我的小 Q 无心刷题,于是怂恿小 C 和他一起颓废,玩起了一款战略游戏。
这款战略游戏的地图由 $n$ 个城市以及 $m$ 条连接这些城市的双向道路构成,并且从任意一个城市出发总能沿着道路走到任意其他城市。现在小 C 已经占领了其中至少两个城市,小 Q 可以摧毁一个小 C 没占领的城市,同时摧毁所有连接这个城市的道路。只要在摧毁这个城市之后能够找到某两个小 C 占领的城市 $u$ 和 $v$,使得从 $u$ 出发沿着道路无论如何都不能走到 $v$,那么小 Q 就能赢下这一局游戏。
小 Q 和小 C 一共进行了 $q$ 局游戏,每一局游戏会给出小 C 占领的城市集合 $S$,你需要帮小 Q 数出有多少个城市在他摧毁之后能够让他赢下这一局游戏。
这款战略游戏的地图由 $n$ 个城市以及 $m$ 条连接这些城市的双向道路构成,并且从任意一个城市出发总能沿着道路走到任意其他城市。现在小 C 已经占领了其中至少两个城市,小 Q 可以摧毁一个小 C 没占领的城市,同时摧毁所有连接这个城市的道路。只要在摧毁这个城市之后能够找到某两个小 C 占领的城市 $u$ 和 $v$,使得从 $u$ 出发沿着道路无论如何都不能走到 $v$,那么小 Q 就能赢下这一局游戏。
小 Q 和小 C 一共进行了 $q$ 局游戏,每一局游戏会给出小 C 占领的城市集合 $S$,你需要帮小 Q 数出有多少个城市在他摧毁之后能够让他赢下这一局游戏。
输入格式
第一行包含一个正整数 $T$,表示测试数据的组数,
对于每组测试数据,
第一行是两个整数 $n$ 和 $m$ ,表示地图的城市数和道路数,
接下来 $m$ 行,每行包含两个整数 $u$ 和 $v~(1 \leq u < v \leq n)$,表示第 $u$ 个城市和第 $v$ 个城市之间有一条道路,同一对城市之间可能有多条道路连接,
第 $m+1$ 是一个整数 $q$,表示游戏的局数,
接下来 $q$ 行,每行先给出一个整数 $|S|~(2 \leq |S| \leq n)$,表示小 C 占领的城市数量,然后给出 $|S|$ 个整数 $s_1,s_2,\dots,s_{|S|}~(1 \leq s_1 < s_2 < \dots < s_{|S|} \leq n)$,表示小 C 占领的城市。
对于每组测试数据,
第一行是两个整数 $n$ 和 $m$ ,表示地图的城市数和道路数,
接下来 $m$ 行,每行包含两个整数 $u$ 和 $v~(1 \leq u < v \leq n)$,表示第 $u$ 个城市和第 $v$ 个城市之间有一条道路,同一对城市之间可能有多条道路连接,
第 $m+1$ 是一个整数 $q$,表示游戏的局数,
接下来 $q$ 行,每行先给出一个整数 $|S|~(2 \leq |S| \leq n)$,表示小 C 占领的城市数量,然后给出 $|S|$ 个整数 $s_1,s_2,\dots,s_{|S|}~(1 \leq s_1 < s_2 < \dots < s_{|S|} \leq n)$,表示小 C 占领的城市。
输出格式
对于每一局游戏,输出一行,包含一个整数,表示这一局游戏中有多少个城市在小 Q 摧毁之后能够让他赢下这一局游戏。
输入输出样例
输入 #1
2 7 6 1 2 1 3 2 4 2 5 3 6 3 7 3 2 1 2 3 2 3 4 4 4 5 6 7 6 6 1 2 1 3 2 3 1 4 2 5 3 6 4 3 1 2 3 3 1 2 6 3 1 5 6 3 4 5 6
输出 #1
0 1 3 0 1 2 3
对于 $30\%$ 的分数, $\sum |S| \leq 20$ 。
对于另外 $45\%$ 的分数,对于每一次询问,满足 $|S| = 2$ 。
对于 $100\%$ 的分数, $1\le T\le 10 , 2\le n\le 10^5 , n-1\le m\le 2\times 10^5 , 1\le q\le 10^5$ ,且对于每组测试数据,有 $\sum |S| \leq 2\times 10^5$ 。
对于另外 $45\%$ 的分数,对于每一次询问,满足 $|S| = 2$ 。
对于 $100\%$ 的分数, $1\le T\le 10 , 2\le n\le 10^5 , n-1\le m\le 2\times 10^5 , 1\le q\le 10^5$ ,且对于每组测试数据,有 $\sum |S| \leq 2\times 10^5$ 。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?