首页 > 其他分享 >P2863 [USACO06JAN] The Cow Prom S

P2863 [USACO06JAN] The Cow Prom S

时间:2024-12-05 22:33:24浏览次数:9  
标签:cnt Cow int tarjan P2863 ++ Prom dfn low

https://www.luogu.com.cn/problem/P2863

[USACO06JAN] The Cow Prom S

题目描述

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

输入格式

第一行为两个整数 n 和 m。

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

输出格式

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

样例 #1

样例输入 #1

5 4
2 4
3 5
1 2
4 1

样例输出 #1

1

思路

先利用tarjan进行缩点,然后循环判断siz[i]的个数是否大于1,时间复杂度为O(n+m);

代码

#include<bits/stdc++.h>
#pragma G++ optimize(2)
#pragma G++ optimize("inline")
using namespace std;
const int p=10004;
int n,m,dfn[p],low[p],tot,scc[p],siz[p];
int cnt,stk[p],top,u,v,sum;
bool f[p];
vector<int>w[p];
void tarjan(int x){
	dfn[x]=low[x]=++tot;
	stk[++top]=x,f[x]=1;
	for(auto i:w[x]){
		if(!dfn[i]){
			tarjan(i);
			low[x]=min(low[x],low[i]);
		}else if(f[i]){
			low[x]=min(low[x],dfn[i]);
		}
	}
	if(dfn[x]==low[x]){
		int i;
		++cnt;
		do{
			i=stk[top--],f[i]=0;
			scc[i]=cnt,++siz[cnt];
		}while(i!=x);
	}
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>u>>v;
		w[u].push_back(v);
	}
	for(int i=1;i<=n;i++){
		if(!dfn[i]){
			tarjan(i);
		}
	}
	for(int i=1;i<=cnt;i++){
		if(siz[i]>1){
			sum++;
		}
	}
	cout<<sum;
	return 0;
}

标签:cnt,Cow,int,tarjan,P2863,++,Prom,dfn,low
From: https://www.cnblogs.com/zyc231254/p/18589556

相关文章

  • 项目里使用Prometheus,Grafana等监控工具
    普罗米修斯(Prometheus)是一款开源系统监控和报警工具,广泛用于收集和查询时间序列数据,如应用程序和服务器的性能指标。其核心功能包括:多维数据模型:基于时间序列数据,由指标名称和一组键值对标识维度。灵活的查询语言:PromQL可以实时分析这些时间序列数据。高效的数据存储:存储时序......
  • docker 安装部署 Prometheus 与grafana
    1.准备环境确保你已经安装了Docker和DockerCompose。如果没有安装,可以参考以下命令:#安装Dockersudoyuminstall-ydockersudosystemctlstartdockersudosystemctlenabledocker#安装DockerComposesudocurl-L"https://github.com/docker/compose/releas......
  • 【人人都能学得会的NLP - 文本分类篇 06】基于 Prompt 的小样本文本分类实践
    【人人都能学得会的NLP-文本分类篇06】基于Prompt的小样本文本分类实践NLPGithub项目:NLP项目实践:fasterai/nlp-project-practice介绍:该仓库围绕着NLP任务模型的设计、训练、优化、部署和应用,分享大模型算法工程师的日常工作和实战经验AI藏经阁:https://git......
  • Kubernetes 集群部署 Prometheus 和 Grafana
    实验环境节点名称IP地址master01192.168.88.10node01192.168.88.20node02192.168.88.30一、node-exporter安装1、创建监控namespacekubectlcreatensmonitor-sa2、部署node-exportermkdir/opt/prometheuscd/opt/prometheus/vimnode-export.yaml---apiVersion......
  • 阅读下面关于setTimeout和Promise的代码,判断结果会输出什么?为什么?
    console.log('start');setTimeout(()=>{console.log('timeout');},0);Promise.resolve().then(()=>{console.log('promise1');}).then(()=>{console.log('promise2');});console.log('end�......
  • HarmonyOS:异步并发 (Promise和async/await)
    一、并发概述并发是指在同一时间内,存在多个任务同时执行的情况。对于多核设备,这些任务可能同时在不同CPU上并行执行。对于单核设备,多个并发任务不会在同一时刻并行执行,但是CPU会在某个任务休眠或进行I/O操作等状态下切换任务,调度执行其他任务,提升CPU的资源利用率。为了......
  • Prompt技巧
    8.Prompt技巧LLM回應中角色有三種,System、User、Agent:Systemprompt:這是系統給模型的一個指示,通常用來設置對話的背景、規則和限制。它可以包含模型應該遵循的行為指南或特定的上下文信息,且可以在清空對話時不被刪除。Userprompt:這是用戶給模型的一個指示,用來提......
  • prompt提示工程介绍--如何更好的使用AI
    我们向大模型提问,就如同去看病时向医生描述自己的症状,描述的越清楚和详细,医生给出的判断可能越准。在大模型能力不变的情况下,大模型回复的质量,完全取决于我们提问的质量。你可以把大模型想象成一位远方的专家,你只能通过发消息跟他互动(请教问题),显然,你给他发的信息的质量如何,直接......
  • prometheus 问题排查 grafana页面信息查询不全
    目录prometheus问题排查grafana页面信息查询不全问题描述问题排查prometheus问题排查grafana页面信息查询不全问题描述登录客户生产环境,grafana监控redis集群的页面,应该有6个节点,但是现在每次刷新,只能出现2-3个节点的信息,有的时候甚至一个节点信息都没有。问题排查首先登......
  • Prometheus监控之Blackbox Exporter
    先安装环境:链接:https://pan.baidu.com/s/1xzyoDLnvs8OTq9nLopU32A提取码:jz6m 安装 Prometheuscd/usr/local/srctar-zxvfprometheus.tar.gzcp-Rprometheus-2.45.3.linux-amd64/usr/local/prometheusvim/usr/lib/systemd/system/prometheus.service[Unit]Descr......