原题传送门

弱智搜索题

我们就枚举每个点,先判断它是否必须发生,如果没有必须发生,开始搜索它的祖先,如果祖先中有必须发生的,那么它就必须发生,如果祖先中没有必须发生的,那么搜索所有入度为0的点(除了它的祖先),搜完之后如果还有没被搜到的必须发生的事件,那么它也必须发生

#include <bits/stdc++.h>
#define N 1005
#define M 100005
#define getchar nc
using namespace std;
inline char nc(){static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
inline int read()
{register int x=0,f=1;register char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x*f;
}
inline void write(register int x)
{if(!x)putchar('0');if(x<0)x=-x,putchar('-');static int sta[20];register int tot=0;while(x)sta[tot++]=x%10,x/=10;while(tot)putchar(sta[--tot]+48);
}
struct node{int to,next;
}e1[M],e2[M];
int head1[N],head2[N],cnt1=0,cnt2=0,in[N];
inline void add1(register int u,register int v)
{e1[++cnt1]=(node){v,head1[u]};head1[u]=cnt1;++in[v];
}
inline void add2(register int u,register int v)
{e2[++cnt2]=(node){v,head2[u]};head2[u]=cnt2;
}
int n,m,d;
int a[N],ans[N],tot=0,mu[N],tic=0,vis[N];
inline bool check(register int x)
{++tic;queue<int>q;q.push(x);vis[x]=tic;while(!q.empty()){int u=q.front();q.pop();for(register int i=head2[u];i;i=e2[i].next){int v=e2[i].to;if(vis[v]!=tic){q.push(v);vis[v]=tic;}}}for(register int i=1;i<=d;++i)if(vis[a[i]]==tic)return true;for(register int i=1;i<=n;++i)if(!in[i]&&vis[i]!=tic)q.push(i),vis[i]=tic;while(!q.empty()){int u=q.front();q.pop();for(register int i=head1[u];i;i=e1[i].next){int v=e1[i].to;if(vis[v]!=tic){q.push(v);vis[v]=tic;}}}for(register int i=1;i<=d;++i)if(vis[a[i]]!=tic)return true;return false;
}
int main()
{n=read(),m=read(),d=read();for(register int i=1;i<=m;++i){int u=read(),v=read();add1(u,v),add2(v,u);}for(register int i=1;i<=d;++i)a[i]=read(),mu[a[i]]=true;for(register int i=1;i<=n;++i)if(mu[i]||check(i))ans[++tot]=i;for(register int i=1;i<=tot;++i)write(ans[i]),putchar(' ');return 0;
}

转载于:https://www.cnblogs.com/yzhang-rp-inf/p/10230101.html

【题解】bzoj 4478 [Jsoi2013]侦探jyy相关推荐

  1. bzoj4478: [Jsoi2013]侦探jyy 图论搜索

    bzoj4478: [Jsoi2013]侦探jyy Description JSOI 的世界里一共有 N 个不同的事件( 依次由 1 到 N 编号),以及 M 条线索. 每一条线索对应一个二元组(x, ...

  2. [BZOJ3523][Poi2014]KLO-Bricks——全网唯一 一篇O(n)题解+bzoj最优解

    Description 有n种颜色的砖块,第i种颜色的砖块有a[i]个,你需要把他们放成一排,使得相邻两个砖块的颜色不相同,限定第一个砖块的颜色是start,最后一个砖块的颜色是end,请构造出一种合 ...

  3. BZOJ 4480: [Jsoi2013]快乐的jyy(回文自动机)

    Description [故事背景] JYY在JSOI有很多很多的好朋友,比如PUPPY,KFC还有PUPPUP.因为 有了这么多的好朋友,所以JYY每天都很快乐.某天,JYY发现好朋友之间关 系的好 ...

  4. bzoj 4480: [Jsoi2013]快乐的jyy

    题意: 给两个串,求两个相同的回文串,在两个串中出现过,位置不同算不同.求方案数. 题解: 回文自动机裸题,当然bzoj3676更裸,记得有一篇博客写的很好,关于回文自动机的,但是忘了是哪篇,好像从h ...

  5. bzoj 4479: [Jsoi2013]吃货jyy 欧拉回路+状压dp

    题意 世界上一共有N个JYY愿意去的城市,分别从1编号到N.JYY选出了K个他一定要乘坐的航班.除此之外,还有M个JYY没有特别的偏好,可以乘坐也可以不乘坐的航班. 一个航班我们用一个三元组(x,y, ...

  6. BZOJ 4480 [JSOI2013] 快乐的jyy

    思路 两个字符串都插入回文自动机中(每次重置last) 最后统计两个right集合的大小就好了 代码 #include <cstdio> #include <algorithm> ...

  7. BZOJ 4479: [Jsoi2013]吃货jyy

    一句话题意:求必须包含某K条边的回路(回到1),使得总权值最小 转化为权值最小的联通的偶点 令F[i]表示联通状态为i的最小权值,(3^n状压)表示不在联通块内/奇点/偶点,连边时先不考虑必选的边的度 ...

  8. [题解] BZOJ 3323 多项式的运算

    BZOJ 3323 多项式的运算 题目描述 Description 某天,mzry1992一边思考着一个项目问题一边在高速公路上骑着摩托车.一个光头踢了他一脚,摩托车损坏,而他也被送进校医院打吊针.现 ...

  9. 题解BZOJ 2563 阿狸和桃子的游戏 [贪心]

    大家都很强,可与之共勉. 说贪心的话,代码短的和巧妙的数论题一样吓人.可是要转化出模型其实还是非常不容易的.比如说这个[2012国家集训队Round 1 day2],着实很巧妙. 阿狸和桃子正在玩一个 ...

最新文章

  1. 苹果挂端口方法_苹果新系统遭吐槽!SSH 默认规则被破坏,程序员无法登录 Web 服务器......
  2. js 控制选中文字
  3. 2014年湖北省TI杯大学生电子设计竞赛论文格式
  4. Integer Sequence Dividing
  5. VTK:图片之PickPixel2
  6. C++实现井字棋小游戏(写得不好,留作纪念!!!)
  7. 这 30 个常用的 Maven 命令你必须熟悉
  8. python第九天(9-33)
  9. Choerodon猪齿鱼敏捷管理实践(一)——需求管理
  10. 一步一步使用标c编写跨平台图像处理库_让一个图像变成反向图像
  11. 万分之二用百分之怎么表示_怎么腐熟猪粪做有机肥
  12. android转场动画的两种方式
  13. 如何让自己发了疯、拼了命、石乐志的学习?
  14. spo0lsv病毒分析
  15. STM32CubeIDE配置使用
  16. 少数人的晚餐—观后感
  17. 弱电怎么控制强电/怎么用单片机来控制交流电220V通断
  18. 光谱测量数据处理(matlab)
  19. 2022年仿魔客吧素材下载站主题源码+Discuz内核开发
  20. 计算机网络ieee标准,IEEE802.11标准演进

热门文章

  1. OpenGL入门之纹理的使用
  2. Oracle中connet by和level用法
  3. ios 有很多种cell时的写法 以及 masonry 的使用
  4. 金融行业软件测试面试题目及回答思路,教你轻松搞定面试官
  5. 瑞星杀毒软件、奇虎360杀毒软件、360卫士、百度卫士联手,搞不定弹出广告 恶意广告图标
  6. 跨模态语义关联对齐检索-图像文本匹配(Image-Text Matching)CVPR2022
  7. 前端内卷加速破局之道
  8. python二郎成长笔记(二)(封装类class)
  9. 内存单元之间的换算关系
  10. Python重试库Retrying和Tenacity