Applese 的QQ群(二分+dfs)
链接:https://ac.nowcoder.com/acm/contest/330/F
来源:牛客网
时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
Applese 有一个QQ群。在这个群中,大家互相请教问题。如 b 向 a 请教过问题,就把 a 叫做是 b 的"老板"。这样一个群中就会有很多老板。
同时规定:如果 a 是 b 的老板,b 是 c 的老板,那么 a 也是 c 的老板。
为了不破坏群里面和谐交流的氛围,Applese 定了一个群规:不允许出现 a 既是 b 的老板, b 又是 a 的老板。
你需要帮助 Applese 判断大家是否遵守了群规。
输入描述:
第一行两个整数 n, m,表示群里的人数以及请教问题的数量。
接下来 m 行,每行两个整数 a, b,表示 a 是 b 的"老板",即 b 向 a 请教了一个问题。
注:无论是否违反了群规,a 都会成为 b 的老板。
输出描述:
对于每次提问,输出一行"Yes"表示大家都遵守了群规,反之输出"No"。
示例1
输入
4 4
1 2
2 3
3 1
1 4
输出
Yes
Yes
No
No
备注:
1≤n≤10^5,1≤n≤10^5
1≤m≤2⋅10^5,1≤m≤2⋅10^5
1≤a,b≤n
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<set>
using namespace std;
typedef long long ll;
int n,m;
struct edge{
int x;
int y;
int nex;
}e[200005];
int cnt,head[100005],fr[200005],to[200005],in[100005],que[100005],vis[100005],tim,f[100005];
void adde(int xx,int yy){
e[cnt].x=xx;
e[cnt].y=yy;
e[cnt].nex=head[xx];
in[yy]++;
head[xx]=cnt++;
}
bool dfs(int x){
if(vis[x]==tim)return true;
if(f[x])return false;
f[x]=1;
vis[x]=tim;
for(int i=head[x];i!=-1;i=e[i].nex){
int v=e[i].y;
//vis[]
if(dfs(v))
return true;
}
vis[x]=0;
return false;
}
bool check(int x){
cnt=0;
tim=0;
// cout<<x<<"#####";
memset(head,-1,sizeof(head));
memset(vis,0,sizeof(vis));
memset(f,0,sizeof(f));
//memset(in,0,sizeof(in));
for(int i=1;i<=x;i++){
adde(fr[i],to[i]);
}
for(int i=1;i<=n;i++){
tim++;
if(!f[i]&&dfs(i)){
return false;
}
}return true;
//return topo();
}
int main()
{
cin >> n >> m;
for(int i=1;i<=m;i++){
scanf("%d%d",&fr[i],&to[i]);
}
int l=1;
int r=m;
int ans=0;
while(l<=r){
int mid=(l+r)/2;
if(check(mid)){
ans=mid;
l=mid+1;
}
else{
r=mid-1;
}
}
for(int i=1;i<=m;i++){
if(i<=ans){
printf("Yes\n");
}
else{
printf("No\n");
}
}
return 0;
}
Applese 的QQ群(二分+dfs)的更多相关文章
- Applese的QQ群-(拓扑+二分)
链接:https://ac.nowcoder.com/acm/contest/330/F来源:牛客网 题目描述 Applese 有一个QQ群.在这个群中,大家互相请教问题.如 b 向 a 请教过问题, ...
- 牛客寒假算法基础集训营4 F Applese 的QQ群
链接:https://ac.nowcoder.com/acm/contest/330/F来源:牛客网 Applese 有一个QQ群.在这个群中,大家互相请教问题.如 b 向 a 请教过问题,就把 a ...
- 我们是怎么管理QQ群的
文章背景:腾讯平台上的qq群数以千万百万计,但99%的在吹水扯蛋,从早上的问好开始,到晚上的晚安,无一不浪费青春之时间,看之痛心,无力改变,只好自己建了一个,希望能以此来改变群内交流的氛围或环境. 以 ...
- 新开了一个ABP交流的QQ群(579765441 ),欢迎加入
因为ABP架构设计交流群人数一直爆满,很多想交流ABP的朋友无法加进群里, 刚新建了一个QQ群,群号579765441 (ABP架构设计交流群2),欢迎对ABP感兴趣的朋友加入. 欢迎加QQ群: AB ...
- 一行实现QQ群组头像,微信群组,圆角等效果. 并支持url直接加载图片
说点题外话. Coding中我们总是经历着这么几个过程. 学会使用: 不管是API也好, 开源库也好. 总是在最开始的学会去用. 了解实现原理: 可能会因为一些不兼容, 代码的异常状态的处理不够完美等 ...
- 山东省滕州市木石镇化石沟村QQ群116528924
山东省滕州市木石镇化石沟村QQ群116528924
- Codeforces Round #381 (Div. 2)D. Alyona and a tree(树+二分+dfs)
D. Alyona and a tree Problem Description: Alyona has a tree with n vertices. The root of the tree is ...
- C# 软件绑定QQ群类开源放出
周天闲来无事写个公共类,可以添加到你们自己项目中限制必须加入你QQ群才可以使用. 代码简单,高手勿喷,有哪里不合理的请回帖让大家学习学习. using System; using System.Tex ...
- Android QQ群:343816731 欢迎大家加入探讨
Android QQ群:343816731 欢迎大家加入探讨.
随机推荐
- MyGeneration代码生成工具
使用MyGeneration 生成代码:转自http://www.cnblogs.com/jack-liang/archive/2011/08/18/2144066.html 我们经常用数据访问层和业 ...
- mysql 索引 笔记1
#不同的存储引擎支持的索引类型也不一样 InnoDB 支持事务,支持行级别锁定,支持 B-tree.Full-text 等索引,不支持 Hash 索引: MyISAM 不支持事务,支持表级别锁定,支持 ...
- 为Vmware里安装的CentOS7.5设置静态IP
[引言]为测试搭建大数据集群环境,采用在Vmware里安装了几台CentOS7.5的虚拟机,在测试过程中,出现启动虚拟机后,虚拟机的IP地址会变,不方便测试集群,所以需要设置静态IP,在此,记录我的设 ...
- Palindromeness CodeChef - PALPROB
传送门 分析 有中文题面所以就不写题目大意了 我们先建出回文树 然后根据fail信息建出一棵树 从根向下dfs,中间记录每一个len出现在哪个节点即可 代码 #include<iostream& ...
- [GO]随机生成四们数字
package main import ( "math/rand" "time" "fmt" ) func InitData(p *int) ...
- (转)MongoDB入门分享-笔记整理精选
原文地址:http://www.cnblogs.com/Kummy/p/3372729.html 最近在学习MongoDB,怕以后忘记,自己做了一个整理,给不知道的小伙伴一起分享学习一下. 第一步&g ...
- Windows下配置Visualsvn Server时需要注意的几点事项
1配置用户组与用户 用户组的权限高于用户的权限, 如果一个用户只有只读权限,同时被加入了拥有写权限的用户组中,此用户可以执行写操作. 2在Pre-commit hook下增加 强制添加注释的钩子脚本 ...
- Sharepoint2013搜索学习笔记之自定义结果显示模板(九)
搜索结果通过套用定义好的显示模板来展示结果,显示模板由js和html组成,我们可以通过修改显示模板,然后将修改好的显示模板跟搜索结果绑定起来,来修改搜索结果的显示效果,例子如下图: 修改前 修改后 第 ...
- js定时执行函数
//方法一: //直接现定义函数 var time = window.setInterval(function(){ $('.lingdao_right').click(); },5000); //方 ...
- android studio中使用recyclerview小白篇(四)
经过努力,我们的recyclerview终于可以使用了,但是装配上真实的数据后,发现左边的内容太长了,如果超过一行,左边内容和右边的内容竟然重叠在一起了,好是让人心塞啊,如下图 后来发现设置左边tex ...