这题好像是个蓝题。(不过也确实差不多QwQ)用到了拓扑排序的知识

我们看这些这车站,沿途停过的车站一定比未停的车站的级别高

所以,未停靠的车站向已经停靠的车站连一条边,入度为0的车站级别就看做1

然后我们把入度为0的边依次取出来,那么它的出边所指车站就一定比这个车站级别高

那么也就是说,一个车站的级别一定比所有指向它的车站中,级别最高的那个车站级别还要高1级

(x的级别小于y)

再跑一个拓扑就行了qwq

Code:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int maxm=;
  4. const int maxn=;
  5. int head[maxm],to[maxm],nxt[maxm];
  6. int in[maxn],cnt,dep[maxn];
  7. int a[maxn],flag[maxn],vis[maxn][maxn],ans;
  8. inline void add(int u,int v)
  9. {
  10. cnt++;
  11. to[cnt]=v;
  12. nxt[cnt]=head[u];
  13. head[u]=cnt;
  14. }
  15. int n,m;
  16. int main()
  17. {
  18. scanf("%d%d",&n,&m);
  19. for(int i=;i<=m;i++)
  20. {
  21. memset(a,,sizeof(a));
  22. memset(flag,,sizeof(flag));
  23. int k;
  24. scanf("%d",&k);
  25. for(int j=;j<=k;j++)
  26. {
  27. scanf("%d",&a[j]);
  28. flag[a[j]]=;
  29. }
  30. for(int j=a[]+;j<=a[k];j++)
  31. {
  32. if(!flag[j])
  33. {
  34. for(int p=;p<=k;p++)
  35. {
  36. if(!vis[j][a[p]])
  37. {
  38. in[a[p]]++;
  39. add(j,a[p]);
  40. vis[j][a[p]]=;
  41. }
  42. }
  43. }
  44. }
  45. }
  46. queue<int> q;
  47. for(int i=;i<=n;i++)
  48. {
  49. if(!in[i])
  50. {
  51. q.push(i);
  52. dep[i]=;
  53. }
  54. }
  55. while(!q.empty())
  56. {
  57. int top=q.front();
  58. q.pop();
  59. for(int e=head[top];e;e=nxt[e])
  60. {
  61. int v=to[e];
  62. dep[v]=max(dep[v],dep[top]+);
  63. ans=max(ans,dep[v]);
  64. in[to[e]]--;
  65. if(!in[to[e]])
  66. {
  67. q.push(to[e]);
  68. }
  69. }
  70. }
  71. cout<<ans;
  72. return ;
  73. }

【洛谷P1983 车站分级】的更多相关文章

  1. 洛谷P1983车站分级

    洛谷\(P1983\)车站分级(拓扑排序) 目录 题目描述 题目分析 思路分析 代码实现 题目描述 题目在洛谷\(P1983\)上 ​ 题目: 一条单向的铁路线上,依次有编号为 \(1, 2, -, ...

  2. 洛谷P1983 车站分级

    P1983 车站分级 297通过 1.1K提交 题目提供者该用户不存在 标签图论贪心NOIp普及组2013 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 求帮忙指出问题! 我这么和(diao ...

  3. 洛谷 P1983 车站分级

    题目链接 https://www.luogu.org/problemnew/show/P1983 题目描述 一条单向的铁路线上,依次有编号为 1,2,…,n的 n个火车站.每个火车站都有一个级别,最低 ...

  4. 洛谷P1983车站分级题解

    题目 这个题非常毒瘤,只要还是体现在其思维难度上,因为要停留的车站的等级一定要大于不停留的车站的等级,因此我们可以从不停留的车站向停留的车站进行连边,然后从入度为0的点即不停留的点全都入队,然后拓扑排 ...

  5. 洛谷 P1983 车站分级 拓扑排序

    Code: #include<cstdio> #include<queue> #include<algorithm> #include<cstring> ...

  6. 【洛谷P1983】车站分级

    车站分级 题目链接 首先,可以发现火车停靠站点的大小是没有什么规律的, 火车可以停靠在级别<=当前级别的站点,必须停靠在级别>=当前最高级别的站点 但是所有没有被停靠的站点级别一定比所有被 ...

  7. P1983 车站分级 思维+拓扑排序

    很久以前的一道暑假集训的题,忘了补. 感觉就是思维建图,加拓扑排序. 未停靠的火车站,必然比停靠的火车站等级低,就可以以此来建边,此处注意用vis来维护一下,一个起点和终点只建立一条边,因为不这样的话 ...

  8. 题解【洛谷P1983】[NOIP2013]车站分级

    题面 题解 不难想到拓扑排序 于是每一个等级高的向等级低的连一条边 考虑拓扑排序过程中的分层 对于每个点进行分层 于是答案就是这些点中的最大层数 然后就会RE 发现我们多连了一些重复的边 用一个标记数 ...

  9. 洛谷 洛谷 P1011 车站 Label:续命模拟QAQ 未知50分

    题目描述 火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上.下车,但上.下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人.从第3站起( ...

随机推荐

  1. C++中构造函数的手动和自动调用方式

    1,对象的构造通过构造函数来完成,和类名相同且没有返回值,这个时候只有参   数一个特性,构造函数可以自定义参数,这个参数一般而言就是对类进行初始  化来使用的:带有参数的构造函数的意义在于可以使得每 ...

  2. 中标麒麟(linux)mysql配置记录

    刚装好mysql时,使用正常,后来再次使用时,连接不成功.(虚拟机中) 配置网络有问题, 1.我将ifcfg-*的两个文件备份后删除了. 2.点击右下角的小电脑,重新新建一个网络连接.把网络接入主机的 ...

  3. 异步IO\数据库\队列\缓存\RabbitMQ队列

    本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 Redis\Memcached缓存 Paramiko SS ...

  4. 排列perm HYSBZ - 1072(状压dp/暴力)

    Description 给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0).例如123434有90种排列能被2整除,其中末位为2的有30种,末位为4的有60种. Input ...

  5. Fusioncharts图表常用参数设置

    1.1 <chart>参数设置: 图表和轴的标题* caption=”String” : 图表上方的标题* subCaption=”String” : 图表上方的副标题* xAxisNam ...

  6. alex说:一切皆bytes

    一.ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示25 ...

  7. Django中间件拦截未登录url

    1.利用装饰器在视图中拦截未登录的url @login_required(login_url='/user/login/') def homepage(request): pass 这种方法适合于程序 ...

  8. Vscode添加谷歌Debug插件

    1. 2.安装好 Debugger for Chrome之后,找到要进行Debug的文件 3. 4.进入到launch.json文件中进行相应的配置 配置文件内容如下: { "version ...

  9. LOJ 6192 城市网络(树上倍增)

    LOJ #6192. 「美团 CodeM 复赛」城市网络(链接) 一棵以 $ 1 $ 号节点为根的树,每个点有一个权值,有 $ q $ 个询问,每次从 $ x $ 点开始往某个祖先 $ y $ 走,初 ...

  10. Spring Security初识

    Spring Security与Spring Boot集成 添加依赖: <dependency> <groupId>org.springframework.boot</g ...