【洛谷_P1983】车站分级

2024-01-30 03:38
文章标签 洛谷 车站 分级 p1983

本文主要是介绍【洛谷_P1983】车站分级,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

车站分级


题目描述

一条单向的铁路线上,依次有编号为 1, 2, …, n 的 n 个火车站。每个火车站都有一个级别,最低为 1 级。现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 x,则始发站、终点站之间所有级别大于等于火车站 x 的都必须停靠。(注意:起始站和终点站自然也算作事先已知需要停靠的站点)

例如,下表是 5 趟车次的运行情况。其中,前 4 趟车次均满足要求,而第 55 趟车次由于停靠了 33 号火车站(2 级)却未停靠途经的 6 号火车站(亦为 2 级)而不满足要求。

现有 m 趟车次的运行情况(全部满足要求),试推算这 n 个火车站至少分为几个不同的级别。

输入格式

第一行包含 2 个正整数 n,m,用一个空格隔开。

第 i + 1 行(1 ≤ i ≤ m)中,首先是一个正整数 s_i(2 ≤ s_i ≤ n),表示第 i 趟车次有 s_i 个停靠站;接下来有s_i个正整数,表示所有停靠站的编号,从小到大排列。每两个数之间用一个空格隔开。输入保证所有的车次都满足要求。

输出格式

一个正整数,即 n 个火车站最少划分的级别数。

输入输出样例

输入#1

9 2 
4 1 3 5 6 
3 3 5 6 

输出#1

2

输入#2

9 3 
4 1 3 5 6 
3 3 5 6 
3 1 5 9 

输出#2

3

解题思路

停靠的站点一定比没有停靠的站点大,我们依此建图,然后拓扑

#include<iostream>
#include<cstdio>
using namespace std;int n,m,tot,head[1010],ans[1010],f[1010];
int s,hhh[1010][1010],maxn,b[1010];struct abc{int to,next;
}l[1000000];void add(int x,int y)
{l[++tot]=(abc){y,head[x]};head[x]=tot;
}void tp()
{int hd=0,tl=0;for(int i=1;i<=n;i++)if(b[i]==0)f[++tl]=i,ans[i]=1;while(hd<tl){hd++;int x=f[hd];for(int i=head[x];i;i=l[i].next){int y=l[i].to;b[y]--;if(b[y]<=0){f[++tl]=y;ans[y]=ans[x]+1;}}}
}int main()
{cin>>n>>m;for(int i=1;i<=m;i++){int h[1010]={0},hh[1010]={0};scanf("%d",&s);for(int j=1;j<=s;j++){scanf("%d",&hh[j]);h[hh[j]]=1;}for(int j=hh[1];j<=hh[s];j++)if(h[j]==0)for(int k=1;k<=s;k++)hhh[j][hh[k]]=1;}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(hhh[i][j])add(i,j),b[j]++;tp();for(int i=1;i<=n;i++)maxn=max(maxn,ans[i]);cout<<maxn<<endl;
}

这篇关于【洛谷_P1983】车站分级的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/658998

相关文章

安科瑞ASJ漏电流继电器在轨道交通地铁车站配电系统中的应用

应用背景 城市轨道交通设备门类复杂、数量庞大、分布广泛,在长期连续运行时存在火灾隐患。在国内外的地铁火灾中,因电气原因引起的火灾占比最大,达到37%,其中供电线路的漏电流更是造成电气火灾的重要因素。消防部门、行业专家往往要求地铁车站设置电气火灾监控系统,但在地铁监控防范措施中,泄漏电流的监测并不完善,现有的泄漏电流监测系统存在误报现象,使得配电系统漏电保护 频繁跳闸。为此,查找频繁误报警原因,采

高精度计算(代码加解析,洛谷p1601,p1303)除法待更新

目录 高精度加法 高精度减法 高精度乘法 高精度加法 我们知道在c++语言中任何数据类型都有一定的表示范围。当两个被加数很大时,正常加法不能得到精确解。在小学,我们做加法都采用竖式方法。那么我们也只需要按照加法进位的方式就能得到最终解。 8 5 6+ 2 5 5-------1 1 1 1 加法进位: c[i] = a[i] + b[i];if(c[i] >=

洛谷 凸多边形划分

T282062 凸多边形的划分 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 先整一个半成品,高精度过两天复习一下补上 #include <iostream>#include <algorithm>#include <set>#include <cstring>#include <string>#include <vector>#include <map>

能量项链,洛谷

解释:  环形dp问题还是考虑将环拉直,可以参考我上一篇文章:环形石子合并 [2 3 5 10 2] 3 5 10 将环拉直,[]内是一个有效的区间,可以模拟吸收珠子的过程,         如[2 3 5] <=>(2,3)(3,5)    2是头,3是中间,5是尾 len >= 3:因为最后[2 10 2]是最小的可以合并的有效区间 len <= n + 1因为[2 3

内蒙古土壤各种养分含量标准分级表

内蒙古地区的土壤类型复杂多样,涵盖草原、荒漠、森林等不同生态系统,土壤养分含量因气候和地域差异较大。因此,内蒙古地区土壤养分含量的标准分级主要根据当地的土壤特性进行划分。以下是根据常见的内蒙古地区土壤类型(如草原土、黑土、沙土等)给出的养分含量标准分级表: 1. 全氮含量标准(g/kg) 等级草原土森林土沙质土极低< 0.3< 0.5< 0.2低0.3 - 0.60.5 - 0.80.2 -

【软件测试】软件测试-----什么是Bug?Bug是如何分级的?Bug的生命周期是怎样的?如何描述一个Bug?

博客目录 一.软件测试的生命周期二.BUG的定义和级别2.1 bug的概念.2.2 如何描述一个bug.2.3bug的级别2.3.1 bug分级的意义.2.3.2 bug的四种级别. 三.BUG的生命周期.四.当与开发人员发生冲突该如何处理(高频面试)五.总结 一.软件测试的生命周期 软件测试贯穿于软件的整个生命周期,针对这句话我们一起来看一下软件测试是如何贯穿软件的整个生命周

洛谷P5490扫描线

0是最小的数字,将一个线段看成一个区间,对于一个矩形,从下扫到上,入边为1,而出边为-1,意思是将这个区间上的所有点加1(区间修改).把线段表示为Line[i],其中记录了l,r,h,tag,左右端点,高度,入边还是出边(1或-1) 那么每次区间修改后不为0的区间它的值可能是1,2,3或者是其它数字,这不好统计,可以将它转化一下,0是不是表示没有被覆盖过的地方,我们只要统计0的个数然后用总长减去

挤牛奶洛谷uasco

题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶。第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒。第二个农民在700秒开始,在 1200秒结束。第三个农民在1500秒开始2100秒结束。期间最长的至少有一个农民在挤奶的连续时间为900秒(从300秒到1200秒),而最长的无人挤奶的连续时间(从挤奶开始一直到挤奶结束)为300秒(从1200秒到1500秒)。

洛谷刷题(7)

P8738 [蓝桥杯 2020 国 C] 天干地支 题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊 (wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。 地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、

数据结构--初步了解(抽象分级)

本文探讨了数据结构和算法在常规开发中的重要性。数据结构如ArrayList用于构建无穷级菜单,线性结构则常用于好友管理。理解数据的逻辑和存储结构、算法的正确性、鲁棒性、简单性、抽象分级和高效性是关键。算法的描述方式包括汉字、流程图、伪代码和实际实现,并通过时间复杂度和空间复杂度评估其效率。在实际应用中,应关注数据结构的合理使用和算法的设计优化。 摘要由CSDN通过智能技术生成 展开  现状:现在