「JSOI2015」最小表示

传送门

很显然的一个结论:一条边 \(u \to v\) 能够被删去,当且仅当至少存在一条其它的路径从 \(u\) 通向 \(v\) 。

所以我们就建出正反两张图,对每个点开两个 bitset 维护它与其他点的连通性,这个可以通过拓扑排序预处理。

然后就枚举每一条边,拿两个端点的两个 bitset 与一下即可判断出这条边是否可以删去。

参考代码:

  1. #include <cstdio>
  2. #include <bitset>
  3. #define rg register
  4. #define file(x) freopen(x".in", "r", stdin), freopen(x".out", "w", stdout)
  5. using namespace std;
  6. template < class T > inline void read(T& s) {
  7. s = 0; int f = 0; char c = getchar();
  8. while ('0' > c || c > '9') f |= c == '-', c = getchar();
  9. while ('0' <= c && c <= '9') s = s * 10 + c - 48, c = getchar();
  10. s = f ? -s : s;
  11. }
  12. const int _ = 3e4 + 5, __ = 1e5 + 5;
  13. int tot, phead[_], rhead[_]; struct Edge { int v, nxt; } edge[__ << 1];
  14. inline void Add_edge(int* head, int u, int v) { edge[++tot] = (Edge) { v, head[u] }, head[u] = tot; }
  15. int n, m, x[__], y[__], pdgr[_], rdgr[_];
  16. bitset < _ > pbs[_], rbs[_];
  17. inline void toposort(int* head, int* dgr, bitset < _ > * bs) {
  18. static int hd, tl, Q[_];
  19. hd = tl = 0;
  20. for (rg int i = 1; i <= n; ++i) if (!dgr[i]) Q[++tl] = i;
  21. while (hd < tl) {
  22. int u = Q[++hd];
  23. for (rg int i = head[u]; i; i = edge[i].nxt) {
  24. int v = edge[i].v; bs[v] |= bs[u], bs[v][u] = 1;
  25. if (!--dgr[v]) Q[++tl] = v;
  26. }
  27. }
  28. }
  29. int main() {
  30. #ifndef ONLINE_JUDGE
  31. file("cpp");
  32. #endif
  33. read(n), read(m);
  34. for (rg int i = 1; i <= m; ++i) {
  35. read(x[i]), read(y[i]);
  36. Add_edge(phead, x[i], y[i]), ++pdgr[y[i]];
  37. Add_edge(rhead, y[i], x[i]), ++rdgr[x[i]];
  38. }
  39. toposort(phead, pdgr, rbs), toposort(rhead, rdgr, pbs);
  40. int ans = 0;
  41. for (rg int i = 1; i <= m; ++i) ans += (pbs[x[i]] & rbs[y[i]]).any();
  42. printf("%d\n", ans);
  43. return 0;
  44. }

「JSOI2015」最小表示的更多相关文章

  1. 「JSOI2015」串分割

    「JSOI2015」串分割 传送门 首先我们会有一个贪心的想法:分得越均匀越好,因为长的绝对比短的大. 那么对于最均匀的情况,也就是 \(k | n\) 的情况,我们肯定是通过枚举第一次分割的位置,然 ...

  2. 「JSOI2015」圈地

    「JSOI2015」圈地 传送门 显然是最小割. 首先对于所有房子,权值 \(> 0\) 的连边 \(s \to i\) ,权值 \(< 0\) 的连边 \(i \to t\) ,然后对于 ...

  3. 「JSOI2015」isomorphism

    「JSOI2015」isomorphism 传送门 我们还是考虑树哈希来判同构. 但是我们需要使用一些特殊的手段来特殊对待假节点. 由于是无向树,我们首先求出重心,然后以重心为根跑树哈希. 此处我们不 ...

  4. 「JSOI2015」symmetry

    「JSOI2015」symmetry 传送门 我们先考虑构造出原正方形经过 \(4\) 种轴对称变换以及 \(2\) 种旋转变换之后的正方形都构造出来,然后对所得的 \(7\) 个正方形都跑一遍二维哈 ...

  5. 「JSOI2015」地铁线路

    「JSOI2015」地铁线路 传送门 第一问很简单:对于每条线路建一个点,然后所有该条线路覆盖的点向它连边,权值为 \(1\) ,然后它向所有线路上的点连边,权值为 \(0\) . 然后,跑一边最短路 ...

  6. 「JSOI2015」染色问题

    「JSOI2015」染色问题 传送门 虽然不是第一反应,不过还是想到了要容斥. 题意转化:需要求满足 \(N + M + C\) 个条件的方案数. 然后我们就枚举三个数 \(i, j, k\) ,表示 ...

  7. 「JSOI2015」套娃

    「JSOI2015」套娃 传送门 考虑贪心. 首先我们假设所有的套娃都互相不套. 然后我们考虑合并两个套娃 \(i\),\(j\) 假设我们把 \(i\) 套到 \(j\) 里面去,那么就可以减少 \ ...

  8. 「JSOI2015」非诚勿扰

    「JSOI2015」非诚勿扰 传送门 我们首先考虑一名女性选中她列表里第 \(x\) 名男性的概率(假设她列表里共有 \(s\) 名男性): \[ P = p \times (1 - p) ^ {x ...

  9. 「JSOI2015」salesman

    「JSOI2015」salesman 传送门 显然我们为了使收益最大化就直接从子树中选大的就好了. 到达次数的限制就是限制了可以选的子树的数量,因为每次回溯上来都会减一次到达次数. 多种方案的判断就是 ...

随机推荐

  1. SpringBoot学习- 3、整合MyBatis

    SpringBoot学习足迹 1.下载安装一个Mysql数据库及管理工具,同类工具很多,随便找一个都可以,我在windows下做测试项目习惯使用的是haosql 它内部集成了MySql-Front管理 ...

  2. AE接口编程

    [转]原文链接:https://malagis.com/arcgis-engine-10-develop-handbook-2-1.html 使用 ArcGIS Engine,也就意味着使用里面的接口 ...

  3. HTML的表单标签汇总

    HTML的表单标签汇总 表单的元素格式: 1. 账号.密码.提交.重置 语法: <p>账号:<input type="text" name="usern ...

  4. 记录 shell学习过程(4)for 循环

    1. for in ` #seq 生成从1到10 如果生成从10到1则写作 seq 10 -1 1 do echo $i done for in 也可以循环出字符串 for i in where is ...

  5. django 搭建一个投票类网站(二)

    前一篇讲了创建一个工程和一个polls的应用程序,以及配置了数据库. 这篇就继续讲吧 1.django admin模块 admin模块是django自带的模块,他让开发者可以不用管写任何代码的情况下就 ...

  6. XSS Payload List

    标签.事件.属性 xss的攻击原理就是前端被插入了恶意的js代码,下面展示大部分可以执行js的标签.事件.属性: 标签(label) <script> <a> <p> ...

  7. IntelliJ IDEA 2017.3尚硅谷-----鼠标悬浮提示

    建议不会的直接百度取消设置

  8. TCP/IP详解,卷1:协议--IP:网际协议

    引言 I P 是 T C P / I P 协议族中最为核心的协议.所有的 T C P.U D P.I C M P 及 I G M P 数据都以 I P 数据 报格式传输(见图 1 - 4).许多刚开始 ...

  9. centos7 源码编译安装nginx教程 nginx安装脚本 lua-nginx-module

    安装nginx需要pcre zlib openssl的库,下文都是在官网直接下载用作编译安装 该nginx安装教程,有安装maxmind IP 库 该nginx安装教程有安装lua-nginx-mod ...

  10. STA之PVT

    在STA星球,用library PVT.RC corner跟OCV来模拟这些不可控的随机因素.在每个工艺结点,通过大量的建模跟实测,针对每个具体的工艺,foundary厂都会提供一张推荐的timing ...