题目链接:https://www.luogu.org/problemnew/show/P1983

符合了NOIP命题的特点,知识点不难,思维量是有的。

step1:把题读进去,理解。得到 非停靠点的等级 < 停靠点的等级

step2:把上述不等关系转化为有向图。即由非停靠点向停靠点连一条边

step3:对于每个入度为零的点dfs找最长路。取其max

step4:输出max+1

code:

  1. #include <queue>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <iostream>
  5. #include <algorithm>
  6. using namespace std;
  7. const int maxn = 500010;
  8. int n, m, answer = -1e9, a[1010], start[1010], rudu[1010];
  9. bool flag[1010];
  10. struct edge{
  11. int next, to, len;
  12. }e[maxn<<2];
  13. int cnt, head[maxn];
  14. int dis[1010];
  15. bool vis[1010], used[1010][1010];
  16. void add(int u, int v, int w)
  17. {
  18. e[++cnt].to = v; e[cnt].next = head[u]; head[u] = cnt; e[cnt].len = w;
  19. }
  20. int SPFA(int s)
  21. {
  22. int ans = -1e9;
  23. queue<int> q;
  24. while(!q.empty()) q.pop();
  25. for(int i = 1; i <= n; i++) dis[i] = -1e9;
  26. memset(vis, 0, sizeof(vis));
  27. dis[s] = 0, vis[s] = 1, q.push(s);
  28. while(!q.empty())
  29. {
  30. int now = q.front(); q.pop();
  31. vis[now] = 0;
  32. for(int i = head[now]; i != -1; i = e[i].next)
  33. {
  34. if(dis[e[i].to] < dis[now] + e[i].len)
  35. {
  36. dis[e[i].to] = dis[now] + e[i].len;
  37. if(!vis[e[i].to])
  38. {
  39. q.push(e[i].to);
  40. vis[e[i].to] = 1;
  41. }
  42. }
  43. }
  44. }
  45. for(int i = 1; i <= n; i++)
  46. if(dis[i] != 1e9) ans = max(dis[i], ans);
  47. return ans;
  48. }
  49. int main()
  50. {
  51. freopen("testdata.in","r",stdin);
  52. memset(head, -1, sizeof(head));
  53. scanf("%d%d",&n,&m);
  54. for(int i = 1; i <= m; i++)
  55. {
  56. int k;
  57. memset(flag, 0, sizeof(flag));
  58. memset(a, 0, sizeof(a));
  59. scanf("%d",&k);
  60. for(int j = 1; j <= k; j++)
  61. {
  62. scanf("%d",&a[j]);
  63. flag[a[j]] = 1;
  64. }
  65. for(int j = a[1]; j <= a[k]; j++)
  66. {
  67. if(flag[j] == 0)
  68. {
  69. for(int l = 1; l <= k; l++)
  70. if(used[j][a[l]] == 0)
  71. {
  72. add(j, a[l], 1);
  73. used[j][a[l]] = 1;
  74. rudu[a[l]]++;
  75. }
  76. }
  77. }
  78. }//build graph
  79. int tot = 0;
  80. for(int i = 1; i <= n; i++)
  81. if(rudu[i] == 0) start[++tot] = i;
  82. for(int i = 1; i <= tot; i++)
  83. answer = max(answer, SPFA(start[i]));
  84. printf("%d",answer+1);
  85. }

【luogu P1983 车站分级】 题解的更多相关文章

  1. 洛谷P1983车站分级题解

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

  2. Luogu P1983 车站分级

    (一周没写过随笔了) 这道题有坑! 看到题目,发现这么明显(??)的要求顺序,还有什么想法,拓扑! 将每条路范围内等级大于等于它的点(不能重复(坑点1))和它连一条边,注意起点终点都要有(坑点2),然 ...

  3. 洛谷P1983 车站分级

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

  4. 洛谷P1983车站分级

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

  5. 洛谷 P1983 车站分级

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

  6. P1983 车站分级[拓扑]

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

  7. 【洛谷P1983 车站分级】

    这题好像是个蓝题.(不过也确实差不多QwQ)用到了拓扑排序的知识 我们看这些这车站,沿途停过的车站一定比未停的车站的级别高 所以,未停靠的车站向已经停靠的车站连一条边,入度为0的车站级别就看做1 然后 ...

  8. P1983车站分级

    %%%rqy 传送 我们注意到题目中这段话: 既然大于等于x的站都要停,那么不停的站的级别是不是都小于x?(这里讨论在始发站和终点站以内的站(注意这里是个坑)) 我们可以找出每趟车没停的站,向所有停了 ...

  9. P1983 车站分级

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

随机推荐

  1. Gson本地和服务器环境不同遇到的Date转换问题 Failed to parse date []: Invalid time zone indicator

    GoogleGson在处理Date格式时有个小陷阱,在不同环境中部署时可能会遇到问题. Gson默认处理Date对象的序列化/反序列化是通过一个SimpleDateFormat对象来实现的,通过下面的 ...

  2. JMETER从JSON响应中提取数据

    如果你在这里,可能是因为你需要使用JMeter从Json响应中提取变量. 好消息!您正在掌握掌握JMeter Json Extractor的权威指南.作为Rest API测试指南的补充,您将学习掌握J ...

  3. Github网站css加载不出来的处理方法(转,亲测有效)

    转载链接:https://blog.csdn.net/qq_36589706/article/details/80573008因为工作需求,自己会经常使用到github,但是突然有一天打开github ...

  4. Codeforces Round #365 (Div. 2) A

    Description Mishka is a little polar bear. As known, little bears loves spending their free time pla ...

  5. jquery uploadify在IE上传报406HttpError

    前端使用uploadify的flash上传控件,后端使用spring MVC,使用IE上传时报406,用Chrome没有问题. 检查发现IE上传时的请求头中,Accept: text/* 而Chrom ...

  6. Tomcat从socket到java Servlet

    整体架构图 一. 启动阶段 BootStrap的main方法加载server.xml配置文件,封装成Server,Service,Connector,Engine等java对象 Server初始化== ...

  7. LeetCode 101 Symmetric Tree 判断一颗二叉树是否是镜像二叉树

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).For ex ...

  8. F. Gourmet and Banquet(贪心加二分求值)

    题目链接:http://codeforces.com/problemset/problem/589/F A gourmet came into the banquet hall, where the ...

  9. leetcode--Learn one iterative inorder traversal, apply it to multiple tree questions (Java Solution)

    will show you all how to tackle various tree questions using iterative inorder traversal. First one ...

  10. Storm概念学习系列之Task任务

    不多说,直接上干货! 每一个Spout/Bolt的线程称为一个Task. Task任务 Task是运行Spout或Bolt的单元,每一个Spout/Bolt的线程称为一个Task. 在Storm 0. ...