BZOJ4562 [Haoi2016]食物链
来源:互联网 发布:路由器mac地址查询 编辑:程序博客网 时间:2024/05/22 17:11
f[x]表示到x为结尾的食物链条数,g[x]表示还没给出边传过去的食物链条数,拿spfa跑一遍即可,其实直接记忆化搜索就行,当时想到了BZ上拿魔法或者物理打怪那题,就傻逼一样写了个用spfa跑的递推-_-
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<iomanip>#include<ctime>#include<cmath>#include<map>#include<bitset>#include<stack>#include<queue>#include<set>#include<vector>using namespace std;#define ll long long #define MAXN 200010#define MAXM 200010#define INF 2000000000#define MOD 2000000007#define QMOD 200000struct vec{ int to; int fro;};vec mp[MAXM];int tai[MAXN],cnt;int n,m;int d[MAXN];int q[MAXN*10],h,t;int f[MAXN],g[MAXN];bool iq[MAXN];int ans;inline void be(int x,int y){ mp[++cnt].to=y; mp[cnt].fro=tai[x]; tai[x]=cnt;}int main(){ int i; int ix,iy; scanf("%d%d",&n,&m); for(i=1;i<=m;i++){ cin>>ix>>iy; be(ix,iy); d[iy]++; } for(i=1;i<=n;i++){ if(!d[i]){ q[t++]=i; if(tai[i]){ f[i]=g[i]=1; } iq[i]=true; t%=QMOD; } } int x,y; while(h!=t){ x=q[h++]; h%=QMOD; iq[x]=false; for(i=tai[x];i;i=mp[i].fro){ y=mp[i].to; f[y]+=g[x]; g[y]+=g[x]; if(!iq[y]){ q[t++]=y; t%=QMOD; iq[y]=true; } } g[x]=0; } for(i=1;i<=n;i++){ if(!tai[i]){ ans+=f[i]; } } printf("%d\n",ans); return 0;} /*4a eb ec ed e */
0 0
- BZOJ4562 [Haoi2016]食物链
- bzoj4562【HAOI2016】食物链
- 【bzoj4562】[Haoi2016]食物链
- bzoj4562 [Haoi2016]食物链
- [BZOJ4562] [Haoi2016]食物链
- bzoj4562: [Haoi2016]食物链
- bzoj4562 [Haoi2016]食物链
- 【BZOJ4562】[Haoi2016]食物链【DP】【DAG】【拓扑排序】
- 【bzoj4562】[Haoi2016]食物链 记忆化搜索
- [bzoj4562][Haoi2016]食物链(拓扑序+dp)
- 【BZOJ4562】【拓扑排序】【DP】[Haoi2016]食物链 题解
- 记忆化搜索——BZOJ4562/Luogu3183 [HAOI2016]食物链
- [HAOI2016]食物链
- 【BZOJ4562】食物链,拓扑DP
- 【BZOJ4562】【食物链】【dp+拓扑排序】
- BZOJ 4562: [Haoi2016]食物链
- 【BZOJ】4562 [Haoi2016]食物链
- BZOJ 4562 [Haoi2016]食物链
- 字节对齐
- vtk实战(四十七)——写入tif格式
- allocator类
- LeetCode 005 Longest Palindromic Substring *
- Program3_F
- BZOJ4562 [Haoi2016]食物链
- light oj 1031
- tomcat闪退,手动无法启动,针对tomcat6,7,8
- Thinking In Java 笔记
- Segmentation fault
- 拷贝构造与重载运算符
- 机器学习\数据挖掘学习日记 20160430
- javascript---学习笔记
- 使用asset catalog管理图片资源