有点忧愁。\(CSP\)也考\(Tarjan\)缩点的嘛。

原理咱也不明白,咱也不敢学,找到模板就是抄。

  1. #include<bits/stdc++.h>
  2. const int maxn = 10000;
  3. const int maxm = 100000;
  4. using namespace std;
  5. int to[maxm + 10];
  6. int nex[maxm + 10];
  7. int head[maxn + 10], cnt = 0;
  8. void addEdge(int a, int b)
  9. {
  10. to[cnt] = b; nex[cnt] = head[a]; head[a] = cnt++;
  11. }
  12. int low[maxn + 10], dfn[maxn + 10], sta[maxn + 10], belong[maxn + 10];
  13. int index, top;
  14. int scc;
  15. bool inStack[maxn + 10];
  16. int num[maxn + 10];
  17. void Tarjan(int u)
  18. {
  19. int v;
  20. low[u] = dfn[u] = ++index;
  21. sta[top++] = u;
  22. inStack[u] = true;
  23. for (int i = head[u]; i != -1; i = nex[i])
  24. {
  25. v = to[i];
  26. if (!dfn[v])
  27. {
  28. Tarjan(v);
  29. if (low[u] > low[v])
  30. low[u] = low[v];
  31. }
  32. else if (inStack[v] && low[u] > dfn[v])
  33. low[u] = dfn[v];
  34. }
  35. if (low[u] == dfn[u])
  36. {
  37. scc++;
  38. do
  39. {
  40. v = sta[--top];
  41. inStack[v] = false;
  42. belong[v] = scc;
  43. num[scc]++;
  44. } while (v != u);
  45. }
  46. }
  47. int main()
  48. {
  49. int n, m;
  50. scanf("%d%d", &n, &m);
  51. memset(head, -1, sizeof(head));
  52. for (int i = 1, a, b; i <= m; i++)
  53. {
  54. scanf("%d%d", &a, &b);
  55. addEdge(a, b);
  56. }
  57. memset(dfn, 0, sizeof(dfn));
  58. memset(inStack, false, sizeof(inStack));
  59. memset(num, 0, sizeof(num));
  60. index = scc = top = 0;
  61. for (int i = 1; i <= n; i++)
  62. {
  63. if (!dfn[i])
  64. Tarjan(i);
  65. }
  66. int ans = 0;
  67. for (int i = 1; i <= scc; i++)
  68. {
  69. ans += num[i] * (num[i] - 1) / 2;
  70. }
  71. printf("%d\n", ans);
  72. return 0;
  73. }

CCF-CSP题解 201509-4 高速公路的更多相关文章

  1. CCF CSP 201509-4 高速公路

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201509-4 高速公路 问题描述 某国有n个城市,为了使得城市间的交通更便利,该国国王打算在 ...

  2. CCF CSP 201703-3 Markdown

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-3 Markdown 问题描述 Markdown 是一种很流行的轻量级标记语言(l ...

  3. CCF CSP 201312-3 最大的矩形

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201312-3 最大的矩形 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i( ...

  4. CCF CSP 201609-3 炉石传说

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201609-3 炉石传说 问题描述 <炉石传说:魔兽英雄传>(Hearthston ...

  5. CCF CSP 201403-3 命令行选项

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...

  6. CCF CSP 201709-4 通信网络

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-4 通信网络 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M ...

  7. CCF CSP 201409-3 字符串匹配

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201409-3 字符串匹配 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那 ...

  8. CCF CSP 201503-3 节日

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201503-3 节日 问题描述 有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形 ...

  9. CCF CSP 201509-2 日期计算

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201509-2 日期计算 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? ...

  10. CCF CSP 201604-2 俄罗斯方块

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201604-2 俄罗斯方块 问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游 ...

随机推荐

  1. AutoCad 二次开发 文字镜像

    AutoCad 二次开发 文字镜像 参考:https://adndevblog.typepad.com/autocad/2013/10/mirroring-a-dbtext-entity.html 在 ...

  2. NIO流的学习以及Buffer的相关操作

    NIO的使用 一).什么叫NIO? 定义:是一套新的Java I/O标准, 在java1.4中被纳入JDK中. 二).NIO的实现方法 NIO是基于块的, 以块为基本单位处理数据. 标准的I/O是基于 ...

  3. ceph中rbd的增量备份和恢复

    ceph中rbd的增量备份和恢复 ceph的文档地址:Ceph Documentation ​ 在调研OpenStack中虚机的备份和恢复时,发现OpenStack和ceph紧密结合,使用ceph做O ...

  4. 如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题

    缓存雪崩 数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机. 比如一个雪崩的简单过程: 1.redis集群大面积故障 2.缓存失 ...

  5. Acquistion Location Confidence for accurate object detection

    Acquistion Location Confidence for accurate object detection 本论文主要是解决一下两个问题: 1.分类得分高的预测框与IOU不匹配,(我猜应 ...

  6. 2019-9-17:基础学习,windows server 2008 r2,搭建web服务器和FTP服务器

    一.信息服务iis管理器安装 1,点击打开“服务器管理器”-->选择“角色”-->选择“添加角色”,打开“添加角色向导” 2,点击“下一步”-->勾选“web服务器(IIS)”--& ...

  7. Photoshop CS2软件下载与安装教程

    Photoshop CS2精简版下载地址: 链接:https://pan.baidu.com/s/1ryJPLuKG_MixWjGJgLebOg提取码:nzz9 软件介绍: Photoshop主要处理 ...

  8. Python-beautifulsoup库

    #beautifulsoup库的安装 pip install beautifulsoup4 python -m pip install --upgrage pip from bs4 import Be ...

  9. 文件系统之LVM 逻辑卷管理

    1. LVM介绍 LVM 是 Logical Volume Manager 的简称,中文就是逻辑卷管理. 物理卷(PV,Physical Volume):就是真正的物理硬盘或分区. 卷组(VG,Vol ...

  10. R语言学习笔记(2)——数据结构与数据集

    一.数据集 数据集的概念 数据集是由数据组成的矩阵数组,行表示观测(observation),列表示变量(variable) 数据类型 数值型变量 PatientID.AdmData.Age 为数值型 ...