原题

这是一道强连通分量板子题。

显然subtask1 是要输出入度为0的点的个数

而subtask2,我们考虑一下最优一定是把一个出度为零的点连到入度为零的点上,这样我们要输出的就是max(出度为零的个数,入度为零的个数)

另外,如果只有一个强连通分量,那么subtask2答案是0

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<stack>
  4. #define N 10010
  5. #define M 50010
  6. using namespace std;
  7. int n,m,head[N],dfn[N],low[N],cnt=1,t,sum,bel[N],out[N],num[N],in[N],ans,as;
  8. bool instk[N];
  9. stack <int> stk;
  10. struct hhh
  11. {
  12. int to,next;
  13. }edge[M];
  14. int read()
  15. {
  16. int ans=0,fu=1;
  17. char j=getchar();
  18. for (;(j<'0' || j>'9') && j!='-';j=getchar()) ;
  19. if (j=='-') fu=-1,j=getchar();
  20. for (;j>='0' && j<='9';j=getchar()) ans*=10,ans+=j-'0';
  21. return ans*fu;
  22. }
  23. void add(int u,int v)
  24. {
  25. edge[cnt].to=v;
  26. edge[cnt].next=head[u];
  27. head[u]=cnt++;
  28. }
  29. void Tarjan(int x)
  30. {
  31. dfn[x]=low[x]=++t;
  32. stk.push(x);
  33. instk[x]=1;
  34. int v;
  35. for (int i=head[x];i;i=edge[i].next)
  36. {
  37. v=edge[i].to;
  38. if (!dfn[v])
  39. {
  40. Tarjan(v);
  41. low[x]=min(low[x],low[v]);
  42. }
  43. else if (instk[v]) low[x]=min(low[x],dfn[v]);
  44. }
  45. if (dfn[x]==low[x])
  46. {
  47. sum++;
  48. do
  49. {
  50. v=stk.top();
  51. stk.pop();
  52. instk[v]=0;
  53. bel[v]=sum;
  54. num[sum]++;
  55. }while(v!=x);
  56. }
  57. }
  58. int main()
  59. {
  60. n=read();
  61. for (int i=1,a;i<=n;i++)
  62. {
  63. a=read();
  64. while(a!=0)
  65. {
  66. add(i,a);
  67. a=read();
  68. }
  69. }
  70. for (int i=1;i<=n;i++)
  71. if (!dfn[i]) Tarjan(i);
  72. for (int i=1;i<=n;i++)
  73. for (int j=head[i],v;j;j=edge[j].next)
  74. {
  75. v=edge[j].to;
  76. if (bel[i]!=bel[v]) in[bel[v]]++,out[bel[i]]++;
  77. }
  78. for (int i=1;i<=sum;i++)
  79. {
  80. if (!in[i]) ans++;
  81. if (!out[i]) as++;
  82. }
  83. printf("%d\n",ans);
  84. if (sum==1) printf("0\n");
  85. else printf("%d",max(ans,as));
  86. return 0;
  87. }

[poj] 1236 networks of schools的更多相关文章

  1. POJ 1236 Network of Schools(强连通 Tarjan+缩点)

    POJ 1236 Network of Schools(强连通 Tarjan+缩点) ACM 题目地址:POJ 1236 题意:  给定一张有向图,问最少选择几个点能遍历全图,以及最少加入�几条边使得 ...

  2. POJ 1236 Network of Schools(强连通分量)

    POJ 1236 Network of Schools 题目链接 题意:题意本质上就是,给定一个有向图,问两个问题 1.从哪几个顶点出发,能走全全部点 2.最少连几条边,使得图强连通 思路: #inc ...

  3. Poj 1236 Network of Schools (Tarjan)

    题目链接: Poj 1236 Network of Schools 题目描述: 有n个学校,学校之间有一些单向的用来发射无线电的线路,当一个学校得到网络可以通过线路向其他学校传输网络,1:至少分配几个 ...

  4. POJ 1236 Network of Schools(Tarjan缩点)

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16806   Accepted: 66 ...

  5. poj 1236 Network of Schools(连通图入度,出度为0)

    http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Su ...

  6. poj 1236 Network of Schools(又是强连通分量+缩点)

    http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Su ...

  7. [tarjan] poj 1236 Network of Schools

    主题链接: http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K To ...

  8. POJ 1236——Network of Schools——————【加边形成强连通图】

    Network of Schools Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u ...

  9. POJ 1236 Network of Schools - 缩点

    POJ 1236 :http://poj.org/problem?id=1236 参考:https://www.cnblogs.com/TnT2333333/p/6875680.html 题意: 有好 ...

随机推荐

  1. 用servlet设计OA管理系统时遇到问题

    如果不加单引号会使得除变量和int类型的值不能传递 转发和重定向的区别 转发需要填写完整路径,重定向只需要写相对路径.原因是重定向是一次请求之内已经定位到了服务器端,转发则需要两次请求每次都需要完整的 ...

  2. 局域网内使用ssh连接两台计算机总结

    因为家里有两台电脑,一个centos7 系统,一个Mac,都是笔记本,感觉两个拿来拿去的用太麻烦了,所以就想用ssh连接cenots7 的电脑,这样就没那么麻烦了.欢迎大家指正 配置静态ip cent ...

  3. Apache POI 工具类 [ PoiUtil ]

    pom.xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml ...

  4. dts--tests(二)

    rxtx_callbacks.py """ DPDK Test suite. Test Rxtx_Callbacks. """ import ...

  5. BeanFactory和IOC控制反转

    之前在看spring,看IOC实在是云里雾里,包括看AOP也是云里雾里的,后来重新学习Java Web,做了一个简单的web项目,再之后看了崔希凡老师的视频,Day27和Day28两天的内容,真的很有 ...

  6. 图解HTTP总结(6)——HTTP首部

    HTTP报文首部 HTTP 协议的请求和响应报文中必定包含 HTTP 首部. 首部内容为客户端和服务器分别处理请求和响应提供所需要的信息. 对于客户端用户来说, 这些信息中的大部分内容都无须亲自查看. ...

  7. Color Length UVA - 1625 DP

    题目:题目链接 题意:输入两个长度分别为n和m的颜色序列,要求按顺序合并成同一个序列,即每次可以把一个序列开头的颜色放到新序列的尾部.对于每个颜色c来说,其跨度L(c)等于最大位置和最小位置之差,输出 ...

  8. win10 解决“ 'g++' 不是内部或外部命令,也不是可运行的程序或批处理文件”的问题

    https://www.jianshu.com/p/9bffbaf12bed 2. 安装MinGW 将MinGW安装在D:\mingw文件夹下(可自由选择,这里为之后添加环境变量作为范例) 安装好后选 ...

  9. Oozie是什么

    Apache Oozie Workflow Scheduler for Hadoop Oozie is a workflow scheduler system to manage Apache Had ...

  10. [学习笔记]CSS选择器

    CSS语法结构 selector {     property1 : value;     property2 : value; } 如果包含多个属性,那么属性每个属性的结尾需要有一个分号.如果属性的 ...