记录编号 | 408298 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [HAOI 2016]食物链 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.202 s | ||
提交时间 | 2017-05-24 11:24:29 | 内存使用 | 2.60 MiB | ||
#include<bits/stdc++.h> using namespace std; const int max_n=100005; vector<int>a[max_n]; int n,m,x,y,ans[max_n],inn[max_n],out[max_n]; inline int read() { char ch; int a=0; ch=getchar(); while(!('0'<=ch&&'9'>=ch))ch=getchar(); while('0'<=ch&&'9'>=ch) a=a*10+ch-'0', ch=getchar(); return a; } inline int dfs(int x) { if(ans[x])return ans[x]; for(int i=0;i<a[x].size();i++) { int u=a[x][i]; dfs(u); ans[x]+=ans[u]; } if (!ans[x])ans[x]=1; } int main() { freopen("chain_2016.in","r",stdin); freopen("chain_2016.out","w",stdout); n=read(); m=read(); for(int i=1;i<=m;i++) { x=read(); y=read(); a[y].push_back(x); inn[x]++; out[y]++; }int anss=0; for(int i=1;i<=n;i++) if(!inn[i]&&out[i]){ dfs(i);anss+=ans[i]; } // for(int i=1;i<=n;i++) // if(!inn[i]&&out[i])anss+=ans[i]; cout<<anss; return 0; }