【基础练习】【拓扑排序】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\) 的字符串,求出它的第 \ ...
随机推荐
- 用ImageSwitcher实现显示图片(更改图片时有动画效果)
ImageView和ImageSwitcher都是用来显示图片的.只不过后者在更新显示的图片的时候可以有动画效果. 注意点: 1.ImageSwitcher初始化需要定义一个ViewFactory,该 ...
- Error:Program type already present: android.arch.lifecycle.LiveData
Apparently, this is intended behavior: com.firebaseui:firebase-ui-firestore:3.1.0 depends on android ...
- Petri网
Petri网是一种适合于系统描述和分析的数学模型,主要描述异步和并发关系.(或者Petri网是对离散并行系统的数学表示,适用于描述异步的,并发的计算机系统模型.) Petri网模型自然,直观,简单易懂 ...
- [转]CENTOS LINUX安装并使用NFS共享文件
FROM :http://www.qiansw.com/centos-linux-nfs.html NFS是linux常用的一种文件分享工具. 下面介绍安装及使用方法. CentOS 5.5 yum ...
- 浅谈 Boost.Asio 的多线程模型
Boost.Asio 有两种支持多线程的方式,第一种方式比较简单:在多线程的场景下,每个线程都持有一个io_service,并且每个线程都调用各自的io_service的run()方法. 另一种支持多 ...
- ajax file upload 修改
先前 写过 JS 判断上传 文件 大小 后来发现一个问题, 就是单页面运行 js 没有问题, 但是基础呢个到项目中 有些时候 obj_img.dynsrc = file.value; 报错说没有 权限 ...
- 如何在Vblock里配置Boot from SAN
啥是vBlock ============ vBlock是VCE用在包含了它的数据中心产品的组件的机架上的一个商标名. 机架中的组件都是有VCE出厂前预先组装好的, 组件的预设以及解决方案, 都是客户 ...
- 深挖android low memory killer
对于PC来说,内存是至关重要.如果某个程序发生了内存泄漏,那么一般情况下系统就会将其进程Kill掉.Linux中使用一种名称为OOM(Out Of Memory,内存不足)的机制来完成这个任务,该机制 ...
- MFC中位图的显示
分析: 首先,我们要明确一点,窗口的绘制包括两个步骤,首先:擦除窗口背景,然后再对窗口重新进行绘制:当擦除窗口背景时,程序会发生一个WM_ERASEBKGND消息,因此可以在此响应函数中完成位图的显示 ...
- Android Migrate Android Code
近期在更改程序架构的时候,用引用Library的方式实现程序的共享化过程中发现R.id.xx的文件不能够在 switch cases 中使用 看代码提示,如下信息: As of ADT 14, r ...