当前位置: 首页 > news >正文

USACO历年白银组真题解析 | 2006年1月

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总贴:USACO历年白银组真题解析 | 汇总-CSDN博客


P2863 The Cow Prom

【题目来源】

洛谷:[P2863 USACO06JAN] The Cow Prom S - 洛谷

【题目描述】

有一个 \(n\) 个点,\(m\) 条边的有向图,请求出这个图点数大于 \(1\) 的强连通分量个数。

【输入】

第一行为两个整数 \(n\)\(m\)

第二行至 \(m+1\) 行,每一行有两个整数 \(a\)\(b\),表示有一条从 \(a\)\(b\) 的有向边。

【输出】

仅一行,表示点数大于 \(1\) 的强连通分量个数。

【输入样例】

5 4
2 4
3 5
1 2
4 1

【输出样例】

1

【算法标签】

《洛谷 P2863 The Cow Prom》 #强连通分量# #Tarjan# #USACO# #2006#

【代码详解】

#include <bits/stdc++.h>
using namespace std;const int N = 1e4 + 5;  // 定义最大节点数// 全局变量声明
int n, m;               // n: 节点数,m: 边数
vector<int> e[N];       // 图的邻接表
int dfn[N], low[N];     // dfn: 访问时间戳,low: 最早可回溯到的节点时间戳
int tot;                // 时间戳计数器
int stk[N], instk[N];   // stk: 栈,instk: 标记节点是否在栈中
int top;                // 栈顶指针
int scc[N], siz[N];     // scc: 节点所属SCC编号,siz: 每个SCC的大小
int cnt;                // SCC计数器/*** Tarjan算法求强连通分量* @param x 当前访问的节点*/
void tarjan(int x)
{// 入栈处理:设置时间戳并入栈dfn[x] = low[x] = ++tot;stk[++top] = x;instk[x] = 1;// 遍历所有邻接节点for (int y : e[x]){if (!dfn[y])            // 如果y未被访问过{tarjan(y);low[x] = min(low[x], low[y]);  // 回溯时更新low值}else if (instk[y])      // 如果y在栈中{low[x] = min(low[x], dfn[y]);  // 更新low值}}// 判断是否为SCC根节点if (dfn[x] == low[x]){int y;++cnt;  // 增加SCC计数do{y = stk[top--];     // 弹出栈顶元素instk[y] = 0;       // 标记为不在栈中scc[y] = cnt;       // 记录SCC编号++siz[cnt];         // 增加当前SCC的大小} while (y != x);       // 直到处理完当前SCC的所有节点}
}int main()
{// 输入节点数和边数cin >> n >> m;// 构建图的邻接表for (int i = 1; i <= m; i++){int a, b;cin >> a >> b;e[a].push_back(b);}// 对每个未访问的节点执行Tarjan算法for (int i = 1; i <= n; i++){if (!dfn[i]){tarjan(i);}}// 统计大小大于1的SCC数量int ans = 0;for (int i = 1; i <= cnt; i++){if (siz[i] > 1){ans++;}}// 输出结果cout << ans << endl;return 0;
}

【运行结果】

5 4
2 4
3 5
1 2
4 1
1
http://www.jsqmd.com/news/370116/

相关文章:

  • 揭秘奥特莱斯礼品卡回收流程:从兑换到现金,这些技巧你必须知道 - 团团收购物卡回收
  • 2026年上海驾校推荐:基于合规与成本痛点排名,针对新手与上班族场景指南 - 品牌推荐
  • 2026年明星代言中介公司联系电话推荐:高效对接明星资源指南 - 品牌推荐
  • 北京旅游选哪家,启程旅行社实力口碑排名大分析 - 工业设备
  • sql注入与mysql语法
  • 20道AI智能体产品经理面试题解析(含收藏 | 附答案)
  • 过年给爸妈点什么外卖?美团更划算,半价+大额满减太省心 - 资讯焦点
  • 江西互联网应用技术学校哪家可靠,这份排名给你答案 - mypinpai
  • 周杰伦同款奶茶推荐,美团App更便宜,周末5折喝到爽 - 资讯焦点
  • 2026十大维生素d3品牌,维生素d3哪个品牌好?四效合一性价比推荐 - 博客万
  • 量子AI测试:变分量子电路在纠错码仿真的混合工具链
  • 2026初中毕业挑院校,江西这些院校就业保障好 - 工业推荐榜
  • ​ KTV点什么外卖最划算?美团半价神券,满减直降省一半 - 资讯焦点
  • 瑞幸新品推荐,点单攻略:美团满减+5折神券,省钱喝遍新品 - 资讯焦点
  • 2026年上海驾校推荐:训练场地与通过率多维度排名,直击教学质量选择痛点 - 品牌推荐
  • 2026年明星代言中介公司联系电话推荐:精选推荐与使用指南 - 品牌推荐
  • 单片机超轻量级多任务操作系统实战指南 - 指南
  • 团建适合点什么外卖?认准美团,周末5折+满减直省一半 - 资讯焦点
  • 新手必看!3个免费公众号SVG排版技巧助你快速上手丨公众号动画制作工具 - peipei33
  • 2026年青岛高性价比汽车贴膜企业推荐,这些品牌好用又靠谱 - 工业品牌热点
  • Libero PolarFire soc DEVICE INFO LOG
  • 2026年充电桩品牌推荐:社区与公共场站深度评价,解决兼容与安全核心痛点 - 品牌推荐
  • 2026年明星代言中介公司联系电话推荐:权威机构联系方式汇总 - 品牌推荐
  • 纠结给女朋友点什么外卖?美团更便宜,周末5折神券直接冲 - 资讯焦点
  • 2026年深圳电动床垫靠谱厂家推荐,电动床垫定制服务的品质之选 - myqiye
  • 好写作AI:当文科生遇上AI,连福柯和马克思都能“拉群聊天”了!
  • 2026年电线电缆批发出售八大实力厂商权威对比与优选推荐 - 深度智识库
  • ​ 避开网红排队潮!推荐一些地道实惠的餐厅,美团半价福利直接冲 - 资讯焦点
  • 2026 年自动化立体仓库软硬件一体化核心品牌深度解析与 Top5 公司推荐 - 品牌策略主理人
  • 2026年充电桩品牌终极评测(权威机构数据背书)| 企业采购避坑全指南 - 品牌推荐