【基础练习】【拓扑排序】codevs3294 车站分级题解
题目来源:NOIP2013 普及第四题
一条单向的铁路线上,依次有编号为1, 2, …, n的n个火车站。每一个火车站都有一个级别,最低为1级。现有若干趟车次在这条线路上行驶。每一趟都满足例如以下要求:假设这趟车次停靠了火车站x。则始发站、终点站之间全部级别大于等于火车站x的都必须停靠。
(注意:起始站和终点站自然也算作事先已知须要停靠的网站)
比如,下表是5趟车次的执行情况。当中。前4趟车次均满足要求,而第5趟车次因为停靠了3号火车站(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个火车站最少划分的级别数。
[Sample 1]
9 2
4 1 3 5 6
3 3 5 6
[Sample 2]
9 3
4 1 3 5 6
3 3 5 6
3 1 5 9
[Sample 1]
2
[Sample 2]
3
对于20%的数据。1 ≤ n, m ≤ 10;
对于50%的数据,1 ≤ n, m ≤ 100。
对于100%的数据。1 ≤ n, m ≤ 1000。
这道题目李晨说一看就是拓扑 我看了半天没看出来看了别人说才想明确⊙﹏⊙b汗 羞愧啊
基本思路是 对于每条线路 他中间的点 没有经过的级别一定严格小于经过的级别 因此每一个没有经过的点指向每一个经过的点连接一条边 这样构建一张图 比較稠密 在拓扑排序就可以 拓扑排序出来几层就分几级
写的代码參考了黄学长的 因此基本一样 但第一次尝试全WA 由于ans=0放错了位置 改动后WA了一半 事实上原因在这里(错误的代码):
while (1)
{
int top=0;
for (int i=1;i<=n;i++)
{
if (!r[i])
{
r[i]=-1;
top++;
for (int j=1;j<=n;j++)
if (e[i][j])
{
e[i][j]=0;
r[j]--;//maybe it is 0 now! 这里有可能产生了新的入度为0的点。而这个点本应该是下一层排序出来的
}
}
}
if (!top) break;
ans++;
也就是说 不能找到一个点处理一个 应该存起来集中处理
那么放代码
————————————————无责任切割线————————————————
由于是准备NOIP,图论的专题基本就到此为止了,当然之后也会穿插一些练习。
Tarjan缩点没学会,李晨说不要学了,于是临时放下。LCA可能还是要看一下,有时间还要尝试线段树平衡树(斜角四十五度仰望天空……)
下一个模块开数学吧 欧拉函数 逆元 组合数 这些都要学的
不知不觉博客的诗句积累了好多···整理了一下真是惊人啊
六一快乐尽管已经过去了 高考加油 准备搬楼 文化课也要加油 努力考清华【= =
——已而得舟,避诸洲,出北海。然后渡扬子江。入苏州洋,辗转四明、天台。以至于永嘉。
【基础练习】【拓扑排序】codevs3294 车站分级题解的更多相关文章
- 洛谷P1983车站分级题解
题目 这个题非常毒瘤,只要还是体现在其思维难度上,因为要停留的车站的等级一定要大于不停留的车站的等级,因此我们可以从不停留的车站向停留的车站进行连边,然后从入度为0的点即不停留的点全都入队,然后拓扑排 ...
- 动态规划 洛谷P4017 最大食物链计数——图上动态规划 拓扑排序
洛谷P4017 最大食物链计数 这是洛谷一题普及/提高-的题目,也是我第一次做的一题 图上动态规划/拓扑排序 ,我认为这题是很好的学习拓扑排序的题目. 在这题中,我学到了几个名词,入度,出度,及没有环 ...
- LG1983 「NOIP2013」车站分级 拓扑排序
问题描述 LG1983 题解 考虑建立有向边\((a,b)\),代表\(a\)比\(b\)低级. 于是枚举每一辆车次经过的车站\(x \in [l,r]\),如果不是车辆停靠的车站,则从\(x\)向每 ...
- NOIp2013 车站分级 【拓扑排序】By cellur925
题目传送门 我们注意到,题目中说:如果这趟车次停靠了火车站 x,则始发站.终点站之间所有级别大于等于火车站x的都必须停靠.有阶级关系,满满的拓扑排序氛围.但是,如果我们按大于等于的关系连,等于的情况就 ...
- NOIP 车站分级 (luogu 1983 & codevs 3294 & vijos 1851) - 拓扑排序 - bitset
描述 一条单向的铁路线上,依次有编号为 1, 2, ..., n 的 n 个火车站.每个火车站都有一个级别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车 ...
- P1983 车站分级 思维+拓扑排序
很久以前的一道暑假集训的题,忘了补. 感觉就是思维建图,加拓扑排序. 未停靠的火车站,必然比停靠的火车站等级低,就可以以此来建边,此处注意用vis来维护一下,一个起点和终点只建立一条边,因为不这样的话 ...
- 算法与数据结构基础 - 拓扑排序(Topological Sort)
拓扑排序基础 拓扑排序用于解决有向无环图(DAG,Directed Acyclic Graph)按依赖关系排线性序列问题,直白地说解决这样的问题:有一组数据,其中一些数据依赖其他,问能否按依赖关系排序 ...
- 【题解】 [HNOI2015]菜肴制作 (拓扑排序)
题目描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号,预估质量最高的菜肴编号为1. 由于菜肴 ...
- 洛谷 P3975 / loj 2102 [TJOI2015] 弦论 题解【后缀自动机】【拓扑排序】
后缀自动机入门. 题目描述 为了提高智商,ZJY 开始学习弦论. 这一天,她在<String theory>中看到了这样一道问题:对于一个给定的长度为 \(n\) 的字符串,求出它的第 \ ...
随机推荐
- List集合中的数据按照某一个属性进行分组
有的时候,我们需要在java中对集合中的数据进行分组运算.例如:Bill对象有money(float)和type(String)属性,现有个集合List<Bill>,需要按照Bill的ty ...
- 白话Spring(基础篇)---AOP(execution表达式)
作为AOP的最后一节内容,我们来简单总结一下切面表达式上见的书写方法.下面的那内容有参考其他博文,在此先对开源博客的各位大神表示感谢! -------------------------------- ...
- ECC校验
ECC的全称是 Error Checking and Correction or Error correction Coding,是一种用于差错检测和修正的算法.NAND闪存在生产和使用中都会产生坏块 ...
- Inferred type 'S' for type parameter 'S' is not within its bound; should extend
在使用springboot 方法报错: Inferred type 'S' for type parameter 'S' is not within its bound; should extends ...
- go语言之进阶篇无缓冲channel
1.无缓冲channel 示例: package main import ( "fmt" "time" ) func main() { //创建一个无缓存的ch ...
- jquery ajax 的 $.get()用法详解
js文件 $(document).ready(function(){ $("form").submit(function(event) {event.preventDefault( ...
- 【Spark】Spark-reduceByKey-深入理解
Spark-reduceByKey-深入理解 spark.apache.org_百度搜索 Apache Spark™ - Lightning-Fast Cluster Computing reduce ...
- TensorFlow (RNN)深度学习 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 序列标注问题 源码下载
http://blog.csdn.net/scotfield_msn/article/details/60339415 在TensorFlow (RNN)深度学习下 双向LSTM(BiLSTM)+CR ...
- PHP ECSHOP中 诡异的问题:expects parameter 1 to be double
使用Ecshop给客户做了一个商城系统,在测试时发现后台在更改订单的配送方式时出现了以下问题 "PHP Warning: number_format() expects parameter ...
- 7.4 Javascript:表单验证-揭开正則表達式的面纱
用元字符匹配对应的字符类型 创建正則表達式有点像创建字符串字面量,仅仅只是正則表達式出如今一对"/"里 正則表達式中会用到一级元字符.用于连接字母与数字 "." ...