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

蓝桥杯备考:拓扑排序+DFS(信息传递)

本题我们只要求环有多少元素就有多少回合游戏

 

我们可以用拓扑排序把环之外的元素打上标记,然后用遍历没打上标记的元素,统计环的元素个数,当然,我们可能不只有一个环,我们取得所有环的最小值就行了

#include <iostream>
#include <queue>
using namespace std;
const int N = 2e5 + 10;
int ne[N];//存图 
int n;
int in[N];//存入度 
bool st[N];
int cnt;
void dfs(int x)
{
	cnt++;
	st[x] = true;
	int y = ne[x];
	if (!st[y] && y)
	{
		dfs(y);
	}
}
int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> ne[i];
		in[ne[i]]++;
	}
	queue<int> q;
	for (int i = 1; i <= n; i++)
	{
		if (in[i] == 0) q.push(i);
	}
	while (q.size())
	{
		auto t = q.front(); q.pop();
		st[t] = true;
		in[ne[t]]--;
		if (in[ne[t]] == 0)
		{
			q.push(ne[t]);
		}
	}
	int ret = n;
	for (int i = 1; i <= n; i++)
	{
		cnt = 0;
		if (!st[i])
		{
			dfs(i);
			ret = min(ret, cnt);
		}
	}
	cout << ret << endl;

	return 0;
}

相关文章:

  • 数据库同步中间件PanguSync:如何跳过初始数据直接进行增量同步
  • Android生态大变革,谷歌调整开源政策,核心开发不再公开
  • 知识库中嵌入模型(Embedding Models)与重排序模型(Re-ranking Models)推荐工具与库
  • JVM 面经
  • docker run -p 5000:5000 my-flask-app
  • Docker Swarm 和 docker composer 需要 的yaml 文件有什么区别
  • 构建全智能生态,追觅携“技术复利”颠覆“大家电”
  • springboot 四层架构之间的关系整理笔记五
  • DexGrasp Anything:具有物理-觉察的普遍机器人灵巧抓取
  • T-SQL 语言基础:逆透视转换
  • CentOS 安装LAMP全过程 - 完整步骤与最佳实践
  • 【大模型】分词粒度
  • 大模型训练过程中KVCache与MLA
  • k近邻算法K-Nearest Neighbors(KNN)
  • 多个git账户团队写作
  • DATA 动态给值处理
  • linux和windows是采用何种机制保存密码的?
  • 构建高可用性西门子Camstar服务守护者:异常监控与自愈实践
  • 计算机二级WPS Office第四套电子表格
  • playwright基础样例demo大全
  • 网站托管找/网络推广员要怎么做
  • 网站 云建站/泰安短视频seo
  • 学php到做网站要多久/网站推广计划书
  • 武汉市新洲区做网站/深圳seo排名
  • 新服务器做网站/市场营销专业
  • 图文可以做网站设计吗/常州谷歌优化