P1983 车站分级(拓扑排序)
车站分级
题目传送门
解题思路
这题就是用拓扑排序分层
首先是建图
每进行一次输入,就将没有停靠的站与停靠的站都建立一条边
因为题目样例不怎么大,所以可以用邻接矩阵
for(int i=1;i<=m;i++)//输入
{cin>>x;memset(c,0,sizeof(c));//清零for(int j=1;j<=x;j++){cin>>a[j];c[a[j]]=1;//标记}for(int j=a[1];j<=a[x];j++)//建图if(c[j]==0)//不是停靠站for(int k=1;k<=x;k++)if(map[j][a[k]]==0)//如果无边{du[a[k]]++;//入度++map[j][a[k]]=1;//建边}
}
拓扑中,用一个f存层数,用一个s找最大层数
f[i]=f[p[h]]+1;//dp
s=max(s,f[i]);//找最大
呈上AC代码
AC代码
#include<iostream>
#include<cstring>
using namespace std;
int n,m,x,h,t,s,a[1005],c[1005],p[1005],f[1005],du[1005],map[1005][1005];
void tp()
{memset(c,0,sizeof(c));for(int i=1;i<=n;i++)//找度为0的入队if(du[i]==0){p[++t]=i;c[i]=1;f[i]=1;}//入队,标记,初值while(h<t){h++;for(int i=1;i<=n;i++)//枚举点if(map[p[h]][i]==1&&c[i]==0)//如果有边并且没有标记{du[i]--;//度--(删边)if(du[i]==0)//如果度为0{f[i]=f[p[h]]+1;//dps=max(s,f[i]);//找最大c[i]=1;//标记p[++t]=i;//入队}}}
}
int main()
{cin>>n>>m;for(int i=1;i<=m;i++)//输入{cin>>x;memset(c,0,sizeof(c));//清零for(int j=1;j<=x;j++){cin>>a[j];c[a[j]]=1;//标记}for(int j=a[1];j<=a[x];j++)//建图if(c[j]==0)//不是停靠站for(int k=1;k<=x;k++)if(map[j][a[k]]==0)//如果无边{du[a[k]]++;//入度++map[j][a[k]]=1;//建边}}tp();//拓扑cout<<s;//输出
}
谢谢
P1983 车站分级(拓扑排序)相关推荐
- 洛谷P1983 车站分级 拓扑排序
题目链接:https://www.luogu.com.cn/problem/P1983 此题是用拓扑排序求层数,将等级高的点连向等级的点,连成的图用拓扑排序看一下多少层,即答案. 代码如下 #incl ...
- P1983 [NOIP2013 普及组] 车站分级——拓扑排序+dp
[NOIP2013 普及组] 车站分级 题目描述 一条单向的铁路线上,依次有编号为 $1, 2, -, n $的 $n $个火车站.每个火车站都有一个级别,最低为 111 级.现有若干趟车次在这条线路 ...
- NOIP2013pj车站分级[拓扑排序]
题目描述 一条单向的铁路线上,依次有编号为 1, 2, -, n 的 n 个火车站.每个火车站都有一个级 别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车 次停靠了 ...
- luogu P1983 车站分级
题目描述 一条单向的铁路线上,依次有编号为 1, 2, -, n 的 n 个火车站.每个火车站都有一个级别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车 ...
- 洛谷P1983 车站分级(图的建立)
题目描述 一条单向的铁路线上,依次有编号为 1, 2, -, n的 n个火车站.每个火车站都有一个级别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 ...
- 洛谷 P1983 车站分级(拓扑排序)
https://www.luogu.com.cn/problem/P1983 思路 对于每一趟车,将其经过的车站中,停靠的和不停靠的连一条边,注意边的去重,要双向标记,不然有个点会超时,这样拓扑排序递 ...
- 洛谷P1983 车站分级(拓扑排序)
[题目描述] 一条单向的铁路线上,依次有编号为 1 , 2 , - , n 1,2,\dots ,n 1,2,-,n的 n n n个火车站.每个火车站都有一个级别,最低为 1 1 1级.现有若干趟车次 ...
- P1983 车站分级
题面:https://www.luogu.org/problem/P1983 首先我们来谈一谈邻接表+dfs: 假设有一辆车经过三个车站ai,aj,ak(ai,aj,ak车站编号递增) 那么在ai,a ...
- 洛谷 P1983 车站分级
嗯... 听说这是一道存图+拓扑排序的题,但是看了一晚上好像只看出存图来.... 自己太蒟蒻,然后没办法,就.....就借用了Mr Kevin的代码和思路,然后自己做了一些了解... (并且现在自己对 ...
最新文章
- WPF判断两个时间大小避免误差
- 前后端分离的探索(四)
- 海外观察丨6 大营销风向洞察,暗藏哪些机会?
- id文本框适应文字_Indesign中对同一行文字进行分行缩排的操作方法
- 如何用html构建ios应用,使用HTML5构建iOS原生APP
- 关于Qt、Qt/E、Qtopia、qvfb、framebuffer、qpe等概念的对比介绍
- python基础语法类型_Python基本语法[2]-简单数据类型,基础
- (76)时序分析基础(基本资源)
- pycharm python3.7环境_Python3+Pycharm+PyQt5环境搭建步骤图文详解
- 李开复:多次失败后,我总结出最优秀创业者的4个特点
- Hive 实用的第三方 UDF 收集
- 变限积分求导公式总结_变限积分求导公式是什么?
- 如何在ESXi7系列镜像里添加网卡vib驱动?
- 记一次企业邮官网SEO优化
- android beam小米,小米手机自定义空白卡模拟加密卡门禁卡教程
- Git 常用命令练习
- 【推荐算法论文阅读】LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation
- JQuery极果商城项目实战(附完整代码)
- 针对大型网吧:阿尔法千兆网吧解决方案(转)
- TP框架无法写入缓存文件