CCF-CSP题解 201509-4 高速公路
2024-09-01 20:11:10
有点忧愁。\(CSP\)也考\(Tarjan\)缩点的嘛。
原理咱也不明白,咱也不敢学,找到模板就是抄。
#include<bits/stdc++.h>
const int maxn = 10000;
const int maxm = 100000;
using namespace std;
int to[maxm + 10];
int nex[maxm + 10];
int head[maxn + 10], cnt = 0;
void addEdge(int a, int b)
{
to[cnt] = b; nex[cnt] = head[a]; head[a] = cnt++;
}
int low[maxn + 10], dfn[maxn + 10], sta[maxn + 10], belong[maxn + 10];
int index, top;
int scc;
bool inStack[maxn + 10];
int num[maxn + 10];
void Tarjan(int u)
{
int v;
low[u] = dfn[u] = ++index;
sta[top++] = u;
inStack[u] = true;
for (int i = head[u]; i != -1; i = nex[i])
{
v = to[i];
if (!dfn[v])
{
Tarjan(v);
if (low[u] > low[v])
low[u] = low[v];
}
else if (inStack[v] && low[u] > dfn[v])
low[u] = dfn[v];
}
if (low[u] == dfn[u])
{
scc++;
do
{
v = sta[--top];
inStack[v] = false;
belong[v] = scc;
num[scc]++;
} while (v != u);
}
}
int main()
{
int n, m;
scanf("%d%d", &n, &m);
memset(head, -1, sizeof(head));
for (int i = 1, a, b; i <= m; i++)
{
scanf("%d%d", &a, &b);
addEdge(a, b);
}
memset(dfn, 0, sizeof(dfn));
memset(inStack, false, sizeof(inStack));
memset(num, 0, sizeof(num));
index = scc = top = 0;
for (int i = 1; i <= n; i++)
{
if (!dfn[i])
Tarjan(i);
}
int ans = 0;
for (int i = 1; i <= scc; i++)
{
ans += num[i] * (num[i] - 1) / 2;
}
printf("%d\n", ans);
return 0;
}
最新文章
- (转)利用libcurl获取新浪股票接口, ubuntu和openwrt实验成功(三)
- webstrom live templates
- Linux服务器模型及其对应的程序流程
- 如何给Visual Studio 2015安装XNA4.0
- 《高性能JavaScript》笔记
- cannot change version web module 3.0
- 五、案例-指令参考-freemarker指令、表达式
- Java基础 —— Java常用类
- Table of Contents - Spring
- tomcat部署javaweb项目的三种方式
- HTTP代理协议 HTTP/1.1的CONNECT方法
- JSOI2007文本生成器
- 解决Struts2.2.20版本的标签不支持style属性的问题
- 计算机世界的道(C/ASM)生一(OS),一生二(API),二生万象(MFC/COM)——学包装技术的程序员将来会损失比较大,因为不了解本质,一旦包装过时就会被淘汰
- awk 详解+实例
- 微信公众平台测试号 “微信登录失败,redirect_uri域名与后台配置不一致,错误代码10003”
- ubuntu Anaconda install
- cv2.getRotationMatrix2D函数
- [HAOI2008]移动玩具(状压&;带权二分图)
- (转载)JWebUnit做Web项目自动化测试
热门文章
- react一写工具
- Django使用mysql数据的流程
- python3 之 趣味数学题(爱因斯坦)
- Fabric1.4源码解析:Peer节点启动过程
- 经典sql面试题(学生表_课程表_成绩表_教师表)
- NIO-概览
- 【Android - 自定义View】之自定义View实现“刮刮卡”效果
- Prometheus 自动发现
- Chapter 07-Basic statistics(Part2 Frequency and contingency tables)
- git的用法 回到某个版本