
174. 受欢迎的牛
发布日期:2021-05-14 16:51:20
浏览次数:32
分类:精选文章
本文共 1352 字,大约阅读时间需要 4 分钟。

当一头牛的出度为0他一定是受欢迎的牛。
#include#include #include using namespace std;const int N=10010,M=50010;int h[N],ne[M],e[M],idx;int s[N],dfn[N],low[N],timestamp,cnt;int Size[N],id[N];bool is[N];int n,m;int top;int dout[N];void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=idx++;}void targan(int u){ dfn[u]=low[u]=++timestamp; s[top++]=u,is[u]=true; for(int i=h[u];~i;i=ne[i]) { int j=e[i]; if(!dfn[j]) { targan(j); low[u]=min(low[u],low[j]); } else if(is[j]) { low[u]=min(low[u],dfn[j]); } } if(low[u]==dfn[u]) { int y; cnt++; do{ y=s[--top]; id[y]=cnt; Size[cnt]++; is[y]=false; }while(y!=u); }}int main(){ memset(h,-1,sizeof h); cin>>n>>m; while(m--) { int a,b; cin>>a>>b; add(a,b); } for(int i=1;i<=n;i++) if(!dfn[i]) targan(i); for(int i=1;i<=n;i++) for(int j=h[i];~j;j=ne[j]) { int t=e[j]; if(id[i]!=id[t]) dout[id[i]]++; } long long sum=0; int zeros=0; for(int i=1;i<=cnt;i++) if(!dout[i]) { zeros++; if(zeros>=2) { sum=0; break; } sum+=Size[i]; } cout< <
发表评论
最新留言
很好
[***.229.124.182]2025年04月30日 20时31分00秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SpringBoot使用RedisTemplate简单操作Redis的五种数据类型
2021-05-13
国标流媒体服务器以ROOT身份运行提示“permission denide”报错解决
2021-05-13
qt中转到槽后如何取消信号与槽关联
2021-05-13
qt问题记录-spin box与double spin box
2021-05-13
移动端事件
2021-05-13
css 图片按比例缩放
2021-05-13
小程序form表单里面buton点击事件失效
2021-05-13
微信小程序placeholder设置自定义样式
2021-05-13
spring-day01
2021-05-13
spring的值注入与组件扫描
2021-05-13
C#跨窗体程序调用方法的具体操作
2021-05-13
C#中创建Android项目
2021-05-13
关于继承的一些基本知识
2021-05-13
抖音发布黄金时间段,抖音上热门最佳时间
2021-05-13
我的图床~
2021-05-13
Thymeleaf sec:authorize 标签不生效
2021-05-14
Iterable与Iterator
2021-05-14
关于WebView当前地址问题的疑惑
2021-05-14