java 车站分级_LG1983 「NOIP2013」车站分级 拓扑排序

问题描述

题解

考虑建立有向边\((a,b)\),代表\(a\)比\(b\)低级。

于是枚举每一辆车次经过的车站\(x \in [l,r]\),如果不是车辆停靠的车站,则从\(x\)向每个停靠了的车站连边。

拓扑排序,建立分层图,搞出最大的层数即可。

\(\mathrm{Code}\)

#include

using namespace std;

template

void read(Tp &x){

x=0;char ch=1;int fh;

while(ch!='-'&&(ch'9')) ch=getchar();

if(ch=='-'){

fh=-1;ch=getchar();

}

else fh=1;

while(ch>='0'&&ch<='9'){

x=(x<<1)+(x<<3)+ch-'0';

ch=getchar();

}

x*=fh;

}

const int maxn=1007;

const int maxm=1000007;

int k,a[maxn],ina[maxn];

bool exist[maxn][maxn];

int n,m;

int Head[maxn],Next[maxm],to[maxm],tot=1;

int rd[maxn];

void add(int x,int y){

to[++tot]=y,Next[tot]=Head[x],Head[x]=tot;

}

int dep[maxn],ans=1;

void toposort(){

queueq;

for(int i=1;i<=n;i++){

if(!rd[i]){

q.push(i);dep[i]=1;

}

}

while(!q.empty()){

int x=q.front();q.pop();

for(int i=Head[x];i;i=Next[i]){

int y=to[i];--rd[y];

if(!rd[y]){

q.push(y);dep[y]=dep[x]+1;

ans=max(dep[y],ans);

}

}

}

}

int main(){

read(n);read(m);

for(int i=1;i<=m;i++){

read(k);memset(ina,0,sizeof(ina));

for(int j=1;j<=k;j++){

read(a[j]);ina[a[j]]=1;

}

for(int j=a[1];j<=a[k];j++){

if(ina[j]) continue;

for(int p=1;p<=k;p++){

if(!exist[j][a[p]]){

++rd[a[p]];add(j,a[p]);

exist[j][a[p]]=1;

}

}

}

}

toposort();

printf("%d\n",ans);

return 0;

}

luogu1983 车站分级 &lpar;拓扑排序&rpar;

对每趟车建一个虚点p,对于不停车的x,连边(x,p,1):对于停车的y,连边(p,y,0)有一条边(a,b,l)就是说b-a>=l由于题目保证一定能走,直接拓扑序dp算最大的就行了 #inclu ...

NOIP2013pj车站分级&lbrack;拓扑排序&rsqb;

题目描述 一条单向的铁路线上,依次有编号为 1, 2, …, n 的 n 个火车站.每个火车站都有一个级 别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车 次停靠了 ...

noip车站分级 拓扑排序

题目传送门 这道题呢 每次输入一段数就把1~n里面没有在这组数里面的数和他们连一波 表示这些数比他们等级低 然后就搞一搞就好了哇 #include #include< ...

洛谷 P1983 车站分级 拓扑排序

Code: #include #include #include #include ...

P1983 车站分级&lbrack;拓扑&rsqb;

题目描述 一条单向的铁路线上,依次有编号为 1, 2, -, n1,2,-,n的 nn个火车站.每个火车站都有一个级别,最低为 11 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟 ...

「NOIP2013」「LuoguP1967」货车运输(最大生成树 倍增 LCA

题目描述 AA国有nn座城市,编号从 11到nn,城市之间有 mm 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 qq 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最 ...

loj2613 「NOIP2013」华容道&lbrack;最短路&rsqb;

感觉和以前做过的一个推箱子很像,都是可以用bfs解决的,而且都是手玩出结论. 因为起始棋子肯定是要和空格交换的,所以第一件事是先把空格移到棋子旁边.然后讨论怎么设计搜索状态.由于和推箱子实在太像了,所 ...

「NOIP2013」货车运输

传送门 Luogu 解题思路 首先 \(\text{Kruskal}\) 一下,构造出一棵森林. 并查集还要用来判断连通性. 倍增 \(\text{LCA}\) 的时候顺便维护一下路径最小值即可. 细 ...

「NOIP2013」华容道

传送门 Luogu 解题思路 预支一点东西: 这题其实有着更为思维的图模型,还十分考验码力,不简单啊 这居然是联赛题 讲正解: 显然我们对于一种合法方案,空格子肯定是一直围绕着特定棋子反复横跳的. 所 ...

随机推荐

CSS居中布局总结

居中布局

demo

清除SQL数据库的日志

ALTER DATABASE [Fuliu_Test] SET RECOVERY SIMPLEALTER DATABASE [Fuliu_Test] SET RECOVERY FULLDBCC SHR ...

DotNetBar&period;Bar控制Y顺序控制方向

DotNetBar.Bar控件Y方向上的顺序控制 老帅       控件DevComponents.DotNetBar.Bar是能够有多种用途的.能够作为容器,也能够作为工具条,不管做什么,在Y方向上 ...

Server in ASP&period;NET-Core

.NET-Core Series Server in ASP.NET-Core DI in ASP.NET-Core Routing in ASP.NET-Core Error Handling in ...

【HNOI2011】数学作业

分段矩乘即可 # include # include # include # include &lt ...

java 反射机制 观点

反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧! 一,先看一下反射的概念: 主要是指程序可以访问,检测和修改它本 ...

Java下载文件的几种方式

转发自博客园Sunny的文章 1.以流的方式下载 public HttpServletResponse download(String path, HttpServletResponse respon ...

Centos下安装cassandra

一.环境准备 环境 Centos6.5  .安装有Java JDK(https://www.cnblogs.com/wt645631686/p/8267239.html这篇文章里有安装JDK1.8的教 ...

sql server 清理缓存

-1. 将当前数据库的全部脏页写入磁盘.“脏页”是已输入缓存区高速缓存且已修改但尚未写入磁盘的数据页. --   CHECKPOINT 可创建一个检查点,在该点保证全部脏页都已写入磁盘,从而在以后的恢 ...

【Java----判断字符串是否为有效的日期格式】

public static boolean isValidDate(String str) { boolean convertSuccess=true; // 指定日期格式为四位年/两位月份/两位日期 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值