题目大意:CodeVs2822的简单版本


传送门

$Tarjan$强连通分量+缩点,若连通块的个数等于一则输出n;若缩点后图中出度为0的点个数为1,输出对应连通块内的点数;否则输出0;

代码中注释部分是调了半个小时没发现有错的地方。。。

 1 #include<cstring>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<cctype>
 6 #define foru(i,x,y) for(int i=x;i<=y;i++)
 7 #define ford(i,x,y) for(int i=x;i>=y;i--)
 8 #define re(x) x=read()
 9 using namespace std;
10 typedef long long LL;
11 typedef double db;
12 const int inf=1e9;
13 const int N=1e6+10;
14
15 struct edge{int to,nxt;}e[N*2];
16 int dfn[N],low[N],stk[N],head[N],vis[N],bl[N],out[N],x,cnt,cl,ed,ne,n,m,ans;
17
18 void add(int a,int b){
19     e[++ne]=(edge){b,head[a]};head[a]=ne;
20 }
21
22 int read(){
23     static int f,x;static char ch;
24     x=f=0;ch=getchar();
25     while(!isdigit(ch)){f=(ch=='-');ch=getchar();}
26     while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
27     return f?-x:x;
28 }
29
30 void tarjan(int k){
31     dfn[k]=low[k]=++cnt;stk[++ed]=k;vis[k]=1;
32     for(int i=head[k];i;i=e[i].nxt){
33         int v=e[i].to;
34         if(!dfn[v]){
35             tarjan(v);
36             low[k]=min(low[k],low[v]);
37         }
38         else if(vis[v])low[k]=min(low[k],dfn[v]);
39     }
40     int p;
41     if(low[k]==dfn[k]){
42         cl++;//x++;
43         do{
44             p=stk[ed--];
45             bl[p]=cl;
46             vis[p]=0;
47         }while(p!=k);
48     }
49 }
50
51 int main(){
52     int u,v;
53     re(n);re(m);
54     foru(i,1,m){
55         re(u);re(v);
56         add(u,v);
57     }
58     foru(i,1,n)if(!dfn[i])tarjan(i);
59     if(cl==1){printf("%d\n",n);return 0;}
60     foru(k,1,n)
61         for(int i=head[k];i;i=e[i].nxt)
62             if(bl[k]!=bl[e[i].to])out[bl[k]]++;
63     v=0;
64     foru(i,1,cl)if(!out[i]){v++;u=i;}
65     if(v==1){
66         foru(i,1,n)if(bl[i]==u)ans++;
67         printf("%d\n",ans);return 0;
68     }
69     else puts("0");
70
71 //    if(v==1)
72 //        foru(i,1,n)if(bl[i]==u)ans++;
73 //    else ans=0;
74 //    printf("%d\n",ans);
75     return 0;
76 }

转载于:https://www.cnblogs.com/y-m-y/p/7681749.html

1051: [HAOI2006]受欢迎的牛 (tarjan强连通分量+缩点)相关推荐

  1. BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1051 题意概括 有n只牛,有m个羡慕关系. 羡慕关系具有传递性. 如果A羡慕B,B羡慕C,那么我们 ...

  2. BZOJ 1051: [HAOI2006]受欢迎的牛

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 7120  Solved: 3779 [Submit][S ...

  3. BZOJ 1051: [HAOI2006]受欢迎的牛【Trajan】

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛 ...

  4. BZOJ 1051: [HAOI2006]受欢迎的牛 强连通分量,Tarjan缩点

    Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也 ...

  5. bzoj1051 [HAOI2006]受欢迎的牛 tarjan缩点

    题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢"是可以传递的--如果A喜 欢B,B喜 ...

  6. Network of Schools POJ - 1236 tarjan强连通分量缩点

    A number of schools are connected to a computer network. Agreements have been developed among those ...

  7. 【POJ - 2553】The Bottom of a Graph(tarjan强连通分量缩点,模板题)

    题干: We will use the following (standard) definitions from graph theory. Let V be a nonempty and fini ...

  8. bzoj1051: [HAOI2006]受欢迎的牛

    tarjan缩点.判断是否只有一个没有出边.是则输出该点点数 #include<cstdio> #include<cstring> #include<iostream&g ...

  9. 2021.8.9【提高B组模拟1】T2 QYQ在艾泽拉斯(Tarjan强连通分量)(并查集)

    QYQ在艾泽拉斯 题目大意 输入样例 3 2 1 2 3 1 1 2 1 0 输出样例 4 样例说明: QYQ从3号点开始,走到2号点,最后走到1号点,结束旅程,共获得1+2+1=4价值的宝物 题目数 ...

  10. 洛谷P2341 [HAOI2006]受欢迎的牛 (Tarjan,SCC缩点)

    P2341 [HAOI2006]受欢迎的牛|[模板]强连通分量 https://www.luogu.org/problem/P2341 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就 ...

最新文章

  1. 忽略某些文件 —— Git 学习笔记 05
  2. Openshift源中的高可用性Drools无状态服务
  3. JAVA内存的可见性
  4. linux分辨率 保存,linux分辨率设置方法与问题-linux分辨率的设置方法分享-linux修改分辨率的经验分享_169IT.COM...
  5. Ubuntu 16 安装JDK1.8
  6. Java Foundation serial ( 一 )
  7. 深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(二)-带宽控制...
  8. linux从哪里入侵电脑,linux入侵的基本命令网站安全 -电脑资料
  9. datagrid getselected/getselections/getData之间的用法差异
  10. ps计算机设置,做着ps电脑卡了怎么办 试试设置这四项
  11. 360n6pro刷鸿蒙系统,因太费电想刷系统,N6Pro哪个版本的系统耗电少,有什么问题或缺点...
  12. PhpStorm Unhandled exceptions错误解决
  13. 使用Larave5.6l提交POST请求出现The page has expired due to inactivity错误
  14. 数据结构 期末复习主观题练习题(答案版)
  15. Android Smart Linkify 支持机器学习
  16. c++ 45行代码实现 生命游戏-细胞自动机!!!
  17. 基于Flexsim的供应链建模与仿真课程设计
  18. Win11开机启动项怎么调整,Win11开机启动项怎么设置
  19. @SpringbootApplication注释是什么意思?
  20. 史上最强的绕口令.没人能读出.要不你试试?

热门文章

  1. dede图片轮播php代码,织梦图片集利用JS输出图片轮播
  2. 是时候拥有一个你自己的命令行工具了
  3. P1725 琪露诺 题解(单调队列)
  4. 【转载】卸载Sql Server 2014数据库
  5. SQL知识点脑图(一张图总结SQL)
  6. JAVA关键字及作用
  7. 正则表达式驼峰标示转下划线
  8. POJ 3020 Antenna Placement(无向二分图的最小路径覆盖)
  9. 近现代科学三大发现:证实佛法真实不虚
  10. Javascript技术之详尽解析event对象