4484: [Jsoi2015]最小表示
Time Limit: 20 Sec Memory Limit: 512 MB
Submit: 103 Solved: 65
[Submit][Status][Discuss]
Description

【故事背景】
还记得去年JYY所研究的强连通分量的问题吗?去年的题目里,JYY研究了对于有向图的“加边”问题。对于图论有着强烈兴趣的JYY,今年又琢磨起了“删边”的问题。
【问题描述】
对于一个N个点(每个点从1到N编号),M条边的有向图,JYY发现,如果从图中删去一些边,那么原图的连通性会发生改变;而也有一些边,删去之后图的连通性并不会发生改变。
JYY想知道,如果想要使得原图任意两点的连通性保持不变,我们最多能删掉多少条边呢?
为了简化一下大家的工作量,这次JYY保证他给定的有向图一定是一个有向无环图(JYY:大家经过去年的问题,都知道对于给任意有向图的问题,最后都能转化为有向无环图上的问题,所以今年JYY就干脆简化一下大家的工作)。

Input

输入一行包含两个正整数N和M。
接下来M行,每行包含两个1到N之间的正整数x_i和y_i,表示图中存在一条从x_i到y_i的有向边。
输入数据保证,任意两点间只会有至多一条边存在。
N<=30,000,M<=100,000

Output

输出一行包含一个整数,表示JYY最多可以删掉的边数。

Sample Input

5 6

1 2

2 3

3 5

4 5

1 5

1 3

Sample Output

2

HINT

Source

By 佚名上传


【分析】
拓扑排序+bitset
先把拓扑序搞出来,然后拓扑倒序用bitset维护u所能到达的点的集合。


【代码】

//bzoj 4484
#include<queue>
#include<bitset>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define M(a) memset(a,0,sizeof a)
#define fo(i,j,k) for(i=j;i<=k;i++)
using namespace std;
const int mxn=30005;
bitset <mxn> b[mxn];
queue <int> q;
int n,m,cnt,tot,ans;
int c[mxn],head[mxn],du[mxn],num[mxn],map[mxn];
struct edge {int to,next;} f[200005];
inline bool comp(int x,int y)
{return num[x]<num[y];
}
inline void add(int u,int v)
{f[++cnt].to=v,f[cnt].next=head[u],head[u]=cnt;
}
int main()
{int i,j,u,v;scanf("%d%d",&n,&m);fo(i,1,m){scanf("%d%d",&u,&v);add(u,v),du[v]++;}fo(i,1,n) if(!du[i]) q.push(i);while(!q.empty()){u=q.front();q.pop();num[u]=++tot;map[tot]=u;for(i=head[u];i;i=f[i].next){v=f[i].to;du[v]--;if(!du[v]) q.push(v);}}for(i=n;i;i--){int top=0;u=map[i];b[u][u]=1;for(j=head[u];j;j=f[j].next){v=f[j].to;c[++top]=v;}sort(c+1,c+top+1,comp);fo(j,1,top){v=c[j];if(b[u][v]) ans++;else b[u]|=b[v];}}printf("%d\n",ans);return 0;
}

bzoj 4484 [Jsoi2015]最小表示相关推荐

  1. bzoj 3144(最小割)

    传送门 最小割,主要考查建边的思路.本蒟蒻也是看了好几位大佬的博客才看懂.比如: 参考1 参考2 (x,y,z)连接(x,y,z+1)容量为f(x,y,z) (x,y,z)连接(x',y',z-d)容 ...

  2. P6134 [JSOI2015]最小表示(拓扑排序递推 + bitset优化,可达性统计变种)

    整理的算法模板合集: ACM模板 P6134 [JSOI2015] 题目要求删除一条边整个图的连通性是不受影响的,也就是说如果我们要删除边(x,y)(x,y)(x,y),删除以后整个图的连通性不受影响 ...

  3. BZOJ 2561: 最小生成树(最小割)

    U,V能在最小(大)生成树上,当且仅当权值比它小(大)的边无法连通U,V. 两次最小割就OK了. --------------------------------------------------- ...

  4. BZOJ 1185: [HNOI2007]最小矩形覆盖 [旋转卡壳]

    1185: [HNOI2007]最小矩形覆盖 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special Judge Submit: 1435  Solv ...

  5. bzoj 4488: [Jsoi2015]最大公约数

    4488: [Jsoi2015]最大公约数 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 270  Solved: 154 [Submit][Sta ...

  6. BZOJ 2127 happiness (最小割)

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2127 题解: 这道题就是传说中的"解方程"法.(貌似也有类似于BZ ...

  7. Bzoj 2127 happiness 最小割

    happiness 题解: 将图转换成最小割. 将割完的图中与S相连的点看做选文科, 与T相连的点看做选理科. flow(s, u) = 文科值 flow(u,t) = 理科值 假设u 和 v 一起选 ...

  8. BZOJ 2400(网络流最小割)

    思路: 首先比较显然能够想到二进制拆分 每一位的贡献是独立的 然后可以用最小割解决 S->i 表示这一个位置是0 inf i-T 表示为1 inf 然后所有的边保留 1 这样只要最后再找一遍t集 ...

  9. bzoj 4487: [Jsoi2015]染色问题

    先贴一个题解吧,最近懒得要死2333,可能是太弱的原因吧,总是扒题解,(甚至连题解都看不懂了),blog也没更新,GG http://blog.csdn.net/werkeytom_ftd/artic ...

  10. bzoj4484[JSOI2015]最小表示

    题意 给出一张DAG,要求删除尽量多的边使得连通性不变.(即:若删边前u到v有路径,则删边后仍有路径).点数30000,边数100000. 分析 如果从u到v有(u,v)这条边,且从u到v只有这一条路 ...

最新文章

  1. 为什么数据库不应该使用外键?
  2. bzoj 1996: [Hnoi2010]chorus 合唱队
  3. Kafka Producer生产者原理
  4. oracle impdp 39002,expdp/impdp ORA-39002ORA-39166 | 学步园
  5. javascript获取随机rgb颜色和十六进制颜色的方法
  6. Verilog数字信号处理---基础1
  7. 开源Java商城项目Javashop的部署过程
  8. ocr小白入门CRNN
  9. android 小米读写权限,Android 小米手机的权限问题
  10. 计算机硬盘检测和修复工具,教你怎么使用硬盘检测修复工具教程
  11. win10+Ubuntu20.04双系统安装
  12. 调试基础知识0(串口调试助手对比 丁丁 大傻 友善)
  13. The setting mapUnderScoreToCamelCase is not known. Make sure you spelled it correctly (case sensiti
  14. 同城货运主导全新商流体系:智慧物流成胜负关键?
  15. 动力锂离子电池电池检测标准和方法
  16. java汉字转换拼音,获取汉字串拼音首字母
  17. 【牛客】恒生公司2015秋招开发类笔试题
  18. Maya XGen 毛发制作1 - 创建头发纹理
  19. html如何添加时钟效果,五步轻松实现JavaScript HTML时钟效果
  20. CAD文件如何批量转换PDF格式?

热门文章

  1. 2022最新阿里云域名注册和续费优惠口令及使用方法
  2. Tomat报错 The APR based Apache Tomcat Native library which allows optimal performance in production
  3. 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-24期...
  4. vant 动态 粘性布局_使用 position:sticky 实现粘性布局
  5. 目标检测:YOLO You Only Look Once
  6. obs录制不了Java_simplescreenrecorder(OBS Studio)录屏没有声音最佳解决方案
  7. wps教鞭功能_你未必知道的WPS神奇功能
  8. rails使用html form,在erb文件中使用rails form_tag和html表单代码有什么区别?
  9. rails相当于java中的什么_Rails中ERB中的%,%=,%#和 - %有什么区别?
  10. 吴恩达机器学习ex4 Neural Networks Learning (python)