BZOJ 4562: [Haoi2016]食物链

来源:互联网 发布:硕鼠软件怎么样 编辑:程序博客网 时间:2024/05/02 13:10

JL的题好神,各种不会做

然后谁能告诉我NOIP题怎么又出到省选来了

#include<cstdio>#include<iostream>#include<cstring>#include<cmath>#include<queue>#include<vector>#include<algorithm>#include<map>#include<set>#define rep(i,l,r) for(int i=l;i<=r;i++)#define per(i,r,l) for(int i=r;i>=l;i--)#define mmt(a,v) memset(a,v,sizeof(a))#define tra(i,u) for(int i=head[u];i;i=e[i].next)using namespace std;typedef long long ll;const int N=100000+5;struct Edge{int to,next;}e[N<<1];int head[N],cnt;void ins(int u,int v){e[++cnt]=(Edge){v,head[u]};head[u]=cnt;}int f[N];bool in[N],out[N];int dp(int u){if(f[u])return f[u];f[u]=!out[u];tra(i,u)f[u]+=dp(e[i].to);return f[u];}int main(){//freopen("a.in","r",stdin);int n,m;scanf("%d %d",&n,&m);while(m--){int u,v;scanf("%d%d",&u,&v);ins(v,u);out[v]=in[u]=true;}int ans=0;rep(i,1,n)if(!in[i]){dp(i);if(out[i])ans+=f[i];}printf("%d\n",ans);return 0;}


0 0
原创粉丝点击