https://www.luogu.com.cn/problem/P1983

思路

对于每一趟车,将其经过的车站中,停靠的和不停靠的连一条边,注意边的去重,要双向标记,不然有个点会超时,这样拓扑排序递推一下就能分级出来

代码
#include <bits/stdc++.h>
using namespace std;
struct node{int id;int level;
};const int N = 1005;int n, m;
int ru[N];
vector <int> g[N];
int tong[N][N];
queue <node> q;
int flag[N];
int ting[N];int main() {//freopen("in.txt", "r", stdin);cin >> n >> m;for (int i = 0; i < m; i++) {memset(flag, 0, sizeof(flag));memset(ting, 0, sizeof(ting));int k, t; cin >> k;for (int j = 1; j <= k; j++) {cin >> ting[j];flag[ting[j]] = 1;}for (int j = ting[1]; j <= ting[k]; j++) {if (!flag[j])for (int p = ting[1]; p <= ting[k]; p++) {if (flag[p] && !tong[j][p]) {ru[p]++;tong[j][p] = 1;tong[p][j] = 1;g[j].push_back(p);}}}}for (int i = 1; i <= n; i++) {// cout << i << " " << ru[i] << endl;if (!ru[i]) {q.push((node){i, 1});}}int mosttop = 1;while (!q.empty()) {node fro = q.front();q.pop();//vis[fro.id] = 1;// cout << "-----------------------" << endl;// cout << "fro: " << fro.id << " " << fro.level << endl;for (int j = 0; j < g[fro.id].size(); j++) {ru[g[fro.id][j]]--;// cout << g[fro.id][j] << " " << ru[g[fro.id][j]] << endl;if (!ru[g[fro.id][j]]) {q.push((node){g[fro.id][j], fro.level + 1});mosttop = max(mosttop, fro.level + 1);}}}cout << mosttop << endl;return 0;
}

洛谷 P1983 车站分级(拓扑排序)相关推荐

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

    题目链接:https://www.luogu.com.cn/problem/P1983 此题是用拓扑排序求层数,将等级高的点连向等级的点,连成的图用拓扑排序看一下多少层,即答案. 代码如下 #incl ...

  2. 洛谷P1983 车站分级(图的建立)

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

  3. 洛谷P1983 车站分级(拓扑排序)

    [题目描述] 一条单向的铁路线上,依次有编号为 1 , 2 , - , n 1,2,\dots ,n 1,2,-,n的 n n n个火车站.每个火车站都有一个级别,最低为 1 1 1级.现有若干趟车次 ...

  4. 洛谷 P1983 车站分级

    嗯... 听说这是一道存图+拓扑排序的题,但是看了一晚上好像只看出存图来.... 自己太蒟蒻,然后没办法,就.....就借用了Mr Kevin的代码和思路,然后自己做了一些了解... (并且现在自己对 ...

  5. 洛谷 P1983 车站分级

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

  6. 洛谷P1983 车站分级

    这题有三种做法 1.O(nm2)1.O(nm2)1.O(nm^2) 488ms / 9.61MB / 0.68KB 不用讲,直接贴代码 #include<bits/stdc++.h> us ...

  7. P1983 [NOIP2013 普及组] 车站分级——拓扑排序+dp

    [NOIP2013 普及组] 车站分级 题目描述 一条单向的铁路线上,依次有编号为 $1, 2, -, n $的 $n $个火车站.每个火车站都有一个级别,最低为 111 级.现有若干趟车次在这条线路 ...

  8. P3387 【模板】缩点 洛谷 java题解 连通图+拓扑排序

    传送门: P3387 [模板]缩点 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3387 问题分析 首先为了节省 ...

  9. 洛谷 1983 车站分级

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

最新文章

  1. C语言中regex_error,为什么这个C 11 std :: regex示例抛出一个regex_error异常?
  2. python 释放变量所指向的内存_通俗易懂的Python垃圾回收机制及内存管理
  3. 批量替换文本中字符代码-python3
  4. 2017-01-03
  5. OpenCV3编程入门(毛星云)之视频读取与播放
  6. 结合传统与数字技术,构建逼真的机械设计
  7. 聚类(part1)--聚类概述
  8. Tomcat到Wildfly:配置数据库连接
  9. javascript的浏览器Bom详解,window、location、history对象
  10. 1114D . Flood Fill
  11. 两个表点击分页的时候怎么判断点的是哪一个表_如何对指数估值,估值表怎么用?...
  12. 我的 CDMA 往事
  13. 解决Android的adb命令行报错Permission denied
  14. 财政bug之”Y2K Accounting Bug“
  15. 关于指针的一些基本常识
  16. 我的世界服务器起床地图维修,Minecraft·起床战争地图更新来了!地图“雪仗”全面解读!...
  17. 科研论文中,图片组合方法和导出高分辨率的方法
  18. 十大气势背景音乐(适合战队,广告招商会场用)
  19. 《百年孤独》读书笔记
  20. 书单丨跟着院士学区块链:系统理解区块链技术

热门文章

  1. Android 8.0/9.0 wifi 自动连接评分机制
  2. 小觅智能荣获2018年度AI赋能行业创新明星
  3. 你真的会用iCloud吗?众多隐藏功能+免费存储10W张照片
  4. Flutter 实现超人飞来,满屏的力量感动画
  5. Entity Framework Code First Migrations
  6. RISC-V MCU--基于嵌入式AI的智能防疫机器人
  7. 拼多多改销量有什么风险
  8. 爬虫-根据公司名抓取相关员工的linkedin数据
  9. 龙兵智能名片装修版v1.5.30 装饰装修 装饰 装饰小程序
  10. cosin等于多少,请问sin29.5度等于多少?