首页 > 其他分享 >abc376D Cycle

abc376D Cycle

时间:2024-10-20 14:00:58浏览次数:8  
标签:std int ans -- abc376D Cycle adj dis

有N个顶点M条边的简单有向图,求包含1号点的最小环的顶点数,如果不存在,输出-1。
2<=N<=2E5, 1<=M<=2E5

分析:bfs求最小环。

#include <bits/stdc++.h>
using i64 = long long;

void solve() {
	int N, M;
	std::cin >> N >> M;
	std::vector<std::vector<int>> adj(N);
	for (int i = 0; i < M; i++) {
		int u, v;
		std::cin >> u >> v;
		u--, v--;
		adj[u].push_back(v);
	}

	int ans = N + 1;
	std::vector<int> dis(N, -1);
	std::queue<int> q;
	q.push(0);
	dis[0] = 0;
	while (!q.empty()) {
		int t = q.front();
		q.pop();
		for (auto x : adj[t]) {
			if (x == 0) {
				ans = std::min(ans, dis[t] + 1);
			}
			if (dis[x] == -1) {
				dis[x] = dis[t] + 1;
				q.push(x);
			}
		}
	}
	if (ans > N) {
		ans = -1;
	}
	std::cout << ans << "\n";
}

int main() {
	std::cin.tie(0)->sync_with_stdio(0);
	int t = 1;
	while (t--) solve();
	return 0;
}

标签:std,int,ans,--,abc376D,Cycle,adj,dis
From: https://www.cnblogs.com/chenfy27/p/18487210

相关文章

  • RecyclerView notifyItemRemoved导致位置错乱的问题
    RecyclerView的刷新分为内容变化和结构变化,结构变化比如remove和insert等并不会导致viewholder的更新,所以有时候我们使用notifyItemRemoved(position);或者使用notifyItemInserted(position);item的位置并没有发生改变,或者位置发生错乱,很是奇怪诡异,需要重新调用notifyDa......
  • nav2的behavior模块,controller模块,lifecycle_manager模块
    Navigation2-main项目中nav2_behaviors、controller和lifecycle_manager文件夹的源代码详解在前述章节中,我们已经详细介绍了constrained_smoother、collision_monitor、mppi_controller、dwb_controller、rotation_shim和core模块。本节将继续介绍navigation2-ma......
  • Android实战经验之如何使用DiffUtil提升RecyclerView的刷新性能
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点DiffUtil是一个用于计算两个列表之间差异的实用程序类,它可以帮助RecyclerView以更高效的方式更新数据。使用DiffUtil可以减少不必要的全局刷新,从而提高性能,特别是在处理......
  • Android RecyclerView 缓存机制深度解析与面试题
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点引言RecyclerView是Android开发中用于展示列表和网格的强大组件。它通过高效的缓存机制,优化了滑动性能和内存使用。本文将深入探讨RecyclerView的缓存机制,并......
  • Android实战经验之如何使用DiffUtil提升RecyclerView的刷新性能
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点DiffUtil是一个用于计算两个列表之间差异的实用程序类,它可以帮助RecyclerView以更高效的方式更新数据。使用DiffUtil可以减少不必要的全局刷新,从而提高性能,特......
  • 使用 RecyclerView 时,有哪些常见的性能优化技巧可以分享?
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点使用RecyclerView时,性能优化是确保流畅用户体验的关键。以下是一些常见的性能优化技巧:1、减少布局复杂性:尽量简化列表项的布局,减少视图嵌套层次,可以使用Const......
  • 如何通过调整RecyclerView的缓存来优化滚动性能
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点在RecyclerView中,setMaxRecycledViews方法用于设置RecycledViewPool的缓存大小,这是一个重要的性能优化手段。RecycledViewPool允许多个RecyclerView实例共......
  • RecyclerView 高效使用与常见问题解决
    RecyclerView是Android应用开发中最常用的UI组件之一,通常用于显示大量数据列表。尽管功能强大,但如果使用不当,会导致性能问题、数据错乱或滚动卡顿等问题。在本篇文章中,我们将探讨RecyclerView的一些常见坑点,提供解决方案,并附带代码示例。1.坑点:ViewHolder重用导致数据错乱......
  • Jetpack业务架构—四件套(Lifecycle、ViewModel、LiveData、DataBinding)
            Jetpack是一个由多个库组成的套件,可帮助开发者遵循最佳做法、减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者可将精力集中于真正重要的编码工作。1. AndroidJetpack组件的优势:        Jetpack推出的主要目的是为了能够......
  • [20240818]测试21c下sqlplus show recyclebin的小问题2.txt
    [20240818]测试21c下sqlplusshowrecyclebin的小问题2.txt--//以前测试过,链接[20210722]sqlplus下showrecycebin的小问题.txt--//注:recycebin拼写错误应该是recyclebin.--//这个问题当时也是浪费了大量实际,我记忆遇到问题时是上午,执行showrecyclebin;[注空格+;],linux......