[AGC027C]ABland Yard
Description
AGC027C
给定一张图,点有标号A或B,计算是否对于任意的一个由AB构成的字符串都在图中有对应的路径。
Solution
观察可以发现,如果有个环(不一定是简单环)是AABB的无限循环,就输出Yes
,否则输出No
。
UPD:对于上面那个结论,这里给出简要证明:当在这个环上任意一个A点时,可以任意的走向AB点,在任意一个B点时也是这样,那么,对于任意字符串,只需走向要求的点即可。
然鹅,话是这么说,码却没有那么好写,我一开始写了dfs
找环,但是一直WA,和标程对拍也拍不出来错。所以我就换了一种思路,借用拓扑排序的思想,每次将只与一种字符相连的点删去,如果删完还剩下,那么就说明有一个AABB的环,否则就没有。
Code
拓扑排序版:
#include <cstdio>
const int N = 2e5 + 10;
const int M = 4e5 + 10;
int hd[N], nxt[M], to[M], cnt;
int deg[N][2];
int n, m;
char col[N];
int q[N], qhd, qtl, vis[N];
inline void adde(int x, int y) {
cnt++;
to[cnt] = y; nxt[cnt] = hd[x];
hd[x] = cnt;
}
int main() {
scanf("%d%d", &n, &m);
scanf("%s", col+1);
for (int i = 1, x, y; i <= m; ++i) {
scanf("%d%d", &x, &y);
adde(x, y);
adde(y, x);
deg[x][col[y] == 'B']++;
deg[y][col[x] == 'B']++;
}
for (int i = 1; i <= n; ++i) {
if (deg[i][0] == 0 || deg[i][1] == 0) vis[q[qtl++] = i] = 1;
}
while (qhd != qtl) {
int x = q[qhd++];
// printf("%d\n", x);
// vis[x] = 1;
for (int i = hd[x]; i; i = nxt[i]) if (!vis[to[i]]) {
if (--deg[to[i]][col[x] == 'B'] == 0) {
vis[to[i]] = 1;
q[qtl++] = to[i];
}
}
}
if (qtl == n) puts("No");
else puts("Yes");
}
[AGC027C]ABland Yard的更多相关文章
- AGC027 C - ABland Yard 拓扑排序
目录 题目链接 题解 代码 题目链接 AGC027 C - ABland Yard 题解 发现有解的充要条件是有一个形为AABBAABBAABB的环 此时每一个点至少与两个不同颜色的点相连 对于初始不 ...
- AtCoder Grand Contest 027 C ABland Yard
ABland Yard 思路: 用了类似拓扑排序的方法来判环 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optim ...
- 【杂题总汇】AGC027 C - ABland Yard
◆AGC027◆C - ABland Yard 终于知道为什么比赛的时候这么多人做C题了…… +传送门+(这是beta版的) ◇ 题目(自己翻译的,不要在意细节……) P.S. (@ 2018-9-2 ...
- AGC 027C.ABland Yard(拓扑/二分图)
题目链接 \(Description\) 给定一张图(可能存在自环),每个点上有A或B.求是否存在一条路径,使得在上面不断走,能够得到所有AB串组合(可以重复经过点). \(n\leq2\times1 ...
- 【Atcoder】AGC027 题解
A - Candy Distribution Again 大意:有x个糖给n个小朋友,必须分完,小朋友得到糖数为一个确切值的时候小朋友会开心,求最多的开心数 题解 直接排序然后贪心分,如果分到最后一个 ...
- 【赛事总结】◇赛时·8◇ AGC-027
[赛时·8]AGC-027 日常AGC坑……还好能涨Rating +传送门+ ◇ 简单总结 感觉像打多校赛一样,应该多关注一下排名……考试的时候为了避免影响心态,管都没有管排名,就在那里死坑B题.最后 ...
- 非关系型数据库(NoSql)
最近了解了一点非关系型数据库,刚刚接触,觉得这是一个很好的方向,对于大数据 方面的处理,非关系型数据库能起到至关重要的地位.这里我主要是整理了一些前辈的经验,仅供参考. 关系型数据库的特点 1.关系型 ...
- Entity Framework 6 Recipes 2nd Edition(11-9)译 -> 在LINQ中使用规范函数
11-9. 在LINQ中使用规范函数 问题 想在一个LINQ查询中使用规范函数 解决方案 假设我们已经有一个影片租赁(MovieRental )实体,它保存某个影片什么时候租出及还回来,以及滞纳金等, ...
- 如何给你的LinuxVPS装个远程桌面
有些人抱怨Linux的系统没有桌面,用着实在是不方便.今天整理一下网上的教程,给VPS装个桌面环境.Centos系统+X Window+GNOME Desktop. 此程序会安装无数乱七八糟的东西到你 ...
随机推荐
- 仿ios按钮切换
<div> <label><input class="btn-switch" type="checkbox"> 默认未选中& ...
- 曼孚科技:AI领域9种常见的监督学习算法
监督学习是机器学习中一种十分重要的算法.与无监督学习相比,监督学习有明确的目标. 分类与回归是监督学习两个主要任务,常见的监督学习算法主要有以下9种: 1 朴素贝叶斯 分类 2 决策树 分类 3 支 ...
- 如何将.sql文件导入到mysql的数据库中
首先通过cmd的net start mysql57 启动mysql的服务器 然后,输入命令:mysql -h 127.0.0.1 -u root -p来启动mysql服务 最后 上图画红圈的部分是.s ...
- window.location.herf传值问题
各个值之间用&&&&&&连接 新版本的tomcat不支持其他字符,需要通过encodeURIComponent编码 变量名数字后不能直接加字母 such ...
- 【你不知道的javaScript 上卷 笔记4】javaScript 中闭包的一些运用
什么是闭包 闭包是javaScript语言的一种特性,在 javaScript 中以函数作为承接单元.当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行. fun ...
- 1307E - Cow and Treats 二分 枚举边界 容斥
1307E - Cow and Treats 题意 有一排给定口味的草,并且给m头牛,每个牛都只吃一种口味的草,并且要吃给定数量个.现在可以安排牛从两边出发,方向向另一方向进发,每次路过符合他口味的草 ...
- [ZJOI2008] 骑士 - 基环树dp
一类基环树dp都是这个套路吧 随便拆掉环上的一条边 然后跑树形dp,设\(f[i][0/1]\)表示以第\(i\)个人为根的子树,第\(i\)个人选或不选,能收获的最大值 以断点\(u,v\)为根分别 ...
- 避免layui form表单重复触发submit绑定事件
个人博客 地址:http://www.wenhaofan.com/article/20180927002336 在使用以下代码监听lay-filter为editConfig的提交按钮后,当点击提交按钮 ...
- Outlook365(Oulook2016 或2013) 写邮件输入收件人时的推荐联系人如何清理?
· 在Outlook365(Oulook2016 或2013) 中写邮件,输入收件人邮箱地址时,会出现“最近联系人” “其他建议”等推荐的联系人,可以方便选择.如果里面有很多邮箱地址的已经无效的话, ...
- Linux 查看是否安装 oracle
查看是否用 oracle 的进程 ps -ef | grep ora 一般安装 oracle ,默认会有 oracle 的用户. id oracle