博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P3183 [HAOI2016]食物链
阅读量:7090 次
发布时间:2019-06-28

本文共 1227 字,大约阅读时间需要 4 分钟。

洛谷P3183 [HAOI2016]食物链

记忆化搜索

 

1 #include 
2 #define For(i,j,k) for(int i=j;i<=k;i++) 3 using namespace std ; 4 5 const int N = 100011,M = 200011 ; 6 int n,m,cnt,ans ; 7 int f[N],head[N],IN[N],OUT[N] ; 8 struct node{ 9 int to,pre ; 10 }e[M] ; 11 12 inline int read() 13 {14 int x = 0 , f = 1 ; 15 char ch = getchar() ; 16 while(ch<'0'||ch>'9') { if(ch=='-') f = -1 ; ch = getchar() ; } 17 while(ch>='0'&&ch<='9') { x = x * 10+ch-48 ; ch = getchar() ; } 18 return x * f ; 19 }20 21 inline void add(int x,int y) 22 {23 e[++cnt].to = y ; 24 e[cnt].pre = head[x] ; 25 head[x] = cnt ; 26 }27 28 inline int dfs(int u) 29 {30 if(f[u]) return f[u] ; 31 if(IN[u]&&!OUT[u]) return f[u] = 1 ; // 单个生物是无法成为食物链的 32 for(int i=head[u];i;i=e[i].pre) {33 int v = e[i].to ; 34 f[u]+=dfs(v) ; 35 }36 return f[u] ; 37 }38 39 int main() 40 {41 n = read() ; m = read() ; 42 int x,y ; 43 while(m--) {44 x = read() ; y = read() ; 45 add(x,y) ; OUT[x]++ ; IN[y]++ ; 46 }47 For(i,1,n) if(!f[i]) ans+=dfs(i) ; 48 printf("%d\n",ans) ; 49 return 0 ; 50 }

 

转载于:https://www.cnblogs.com/third2333/p/7525940.html

你可能感兴趣的文章
RedHat 6.4 搭建rhcs集群
查看>>
三生万物:决策树
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Python爬虫框架Scrapy学习笔记原创
查看>>
大数据时代怎么做
查看>>
java基本语法
查看>>
细说HTTP之上篇
查看>>
将Eclipse Maven项目 导入 IDEA 步骤 成功运行 已测试!~LC
查看>>
Exchange Server 2010的俩种版本比较
查看>>
asp.net 插入视频
查看>>
laravel中的表单请求类型和CSRF防护(六)
查看>>
有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多...
查看>>
我的友情链接
查看>>
监控指定文件所有机器的网络状况
查看>>
11、网络--Linux Bridge(网桥基础)
查看>>
监控apache脚本原理
查看>>
参观迅达云成观后感
查看>>
linux(ubuntu)查看硬件设备命令
查看>>
centos 上 GraphicsMagic安装笔记
查看>>