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

【NOIP2013普及组复赛】题4:车站分级

题4:车站分级

【题目描述】

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

例如,下表是 5 5 5 趟车次的运行情况。其中,前 4 4 4 趟车次均满足要求,而第 5 5 5 趟车次由于停靠了 3 3 3 号火车站( 2 2 2 级)却未停靠途经的 6 6 6 号火车站(亦为 2 2 2 级)而不满足要求。
在这里插入图片描述
现有 m m m 趟车次的运行情况(全部满足要求),试推算这 n n n 个火车站至少分为几个不同的级别。

【输入文件】

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

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

【输出文件】

输出只有一行,包含一个正整数,即 n n 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

【数据范围】

对于 20 % 20\% 20% 的数据, 1 ≤ n , m ≤ 10 1≤n,m≤10 1n,m10

对于 50 % 50\% 50% 的数据, 1 ≤ n , m ≤ 100 1≤n,m≤100 1n,m100

对于 100 % 100\% 100% 的数据, 1 ≤ n , m ≤ 1000 1≤n,m≤1000 1n,m1000

【代码如下】:

#include <bits/stdc++.h>
using namespace std;
ifstream cin("level.in");
ofstream cout("level.out");
struct cs {int to, next;
} a[1000001];
int b[1001], f[1001], head[1001];
bool vi[1001][1001];
int n, m, x, y, z, ans, ll;
void init(int x, int y) {a[++ll].to = y;a[ll].next = head[x];head[x] = ll;
}
int dfs(int x) {for (int k = head[x]; k; k = a[k].next)if (!f[a[k].to])f[x] = max(f[x], dfs(a[k].to));elsef[x] = max(f[x], f[a[k].to]);return ++f[x];
}
int main() {cin >> n >> m;for (int i = 1; i <= m; i++) {cin >> z;for (int i = 1; i <= z; i++) cin >> b[i];int l = 1;for (int i = b[1]; i < b[z]; i++) {if (b[l] == i) {l++;continue;} else {for (int k = 1; k <= z; k++) {if (!vi[b[k]][i]) {init(b[k], i);vi[b[k]][i] = 1;}}}}}for (int i = 1; i <= n; i++) {if (!f[i]) {ans = max(ans, dfs(i));}}cout << ans;
}
http://www.lryc.cn/news/351399.html

相关文章:

  • el-table 表格拖拽 + 表头可修改 + 宽度自定义
  • Google发布的CAT3D,在1分钟内,能够从任意数量的真实或生成的图像创建3D场景。
  • 基于Matlab实现声纹识别系统
  • 【人工智能项目】小车障碍物识别与模型训练(完整工程资料源码)
  • #05【面试问题整理】嵌入式软件工程师
  • 同旺科技 FLUKE ADPT 隔离版发布 ---- 3
  • 探索 JavaScript 新增声明命令与解构赋值的魅力:从 ES5 迈向 ES6
  • HTML5 历史、地理位置处理、全屏处理
  • 打印机驱动程序安装后位置以及注册表中的位置
  • oracle数据库解析过高分析
  • Python解析网页-XPath
  • Vue 3入门指南
  • Arcpy安装和环境配置
  • Swagger2 和 Swagger3 的不同
  • 基于Tensorflow+Keras的卷积神经网络(CNN)人脸识别
  • electron学习记录
  • 【若依框架】学习
  • JavaScript运算符的二义性
  • 一次搞懂常见Banner尺寸,像素标准全解析!
  • 短视频矩阵管理系统:高效运营的智能解决方案
  • ubuntu执行apt-get upgrade时卡住,无法获得锁 /var/lib/dpkg/lock-frontend,无法获取 dpkg 前端锁
  • 和程序员de 相处之道
  • 图解Java数组的内存分布
  • 前端项目使用docker编译发版和gitlab-cicd发版方式
  • 18kw 机架式液冷负载的使用方法有哪些?
  • Linux liloconfig命令教程:创建和配置LILO引导加载器(附实例详解和注意事项)
  • 大厂程序员离职,开发一个盲盒小程序2万,一周开发完!
  • 自定义 Spring AOP 切面实战(鉴权、记录日志)
  • JAVA面试题大全(九)
  • React 组件三大核心之 ref