洛谷 P1983 车站分级(拓扑排序)
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 车站分级(拓扑排序)相关推荐
- 洛谷P1983 车站分级 拓扑排序
题目链接:https://www.luogu.com.cn/problem/P1983 此题是用拓扑排序求层数,将等级高的点连向等级的点,连成的图用拓扑排序看一下多少层,即答案. 代码如下 #incl ...
- 洛谷P1983 车站分级(图的建立)
题目描述 一条单向的铁路线上,依次有编号为 1, 2, -, n的 n个火车站.每个火车站都有一个级别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 ...
- 洛谷P1983 车站分级(拓扑排序)
[题目描述] 一条单向的铁路线上,依次有编号为 1 , 2 , - , n 1,2,\dots ,n 1,2,-,n的 n n n个火车站.每个火车站都有一个级别,最低为 1 1 1级.现有若干趟车次 ...
- 洛谷 P1983 车站分级
嗯... 听说这是一道存图+拓扑排序的题,但是看了一晚上好像只看出存图来.... 自己太蒟蒻,然后没办法,就.....就借用了Mr Kevin的代码和思路,然后自己做了一些了解... (并且现在自己对 ...
- 洛谷 P1983 车站分级
题目描述 一条单向的铁路线上,依次有编号为 1, 2, -, n 的 n 个火车站.每个火车站都有一个级 别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车 次停靠了 ...
- 洛谷P1983 车站分级
这题有三种做法 1.O(nm2)1.O(nm2)1.O(nm^2) 488ms / 9.61MB / 0.68KB 不用讲,直接贴代码 #include<bits/stdc++.h> us ...
- P1983 [NOIP2013 普及组] 车站分级——拓扑排序+dp
[NOIP2013 普及组] 车站分级 题目描述 一条单向的铁路线上,依次有编号为 $1, 2, -, n $的 $n $个火车站.每个火车站都有一个级别,最低为 111 级.现有若干趟车次在这条线路 ...
- P3387 【模板】缩点 洛谷 java题解 连通图+拓扑排序
传送门: P3387 [模板]缩点 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3387 问题分析 首先为了节省 ...
- 洛谷 1983 车站分级
题目描述 一条单向的铁路线上,依次有编号为 1, 2, -, n 的 n 个火车站.每个火车站都有一个级别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车 ...
最新文章
- C语言中regex_error,为什么这个C 11 std :: regex示例抛出一个regex_error异常?
- python 释放变量所指向的内存_通俗易懂的Python垃圾回收机制及内存管理
- 批量替换文本中字符代码-python3
- 2017-01-03
- OpenCV3编程入门(毛星云)之视频读取与播放
- 结合传统与数字技术,构建逼真的机械设计
- 聚类(part1)--聚类概述
- Tomcat到Wildfly:配置数据库连接
- javascript的浏览器Bom详解,window、location、history对象
- 1114D . Flood Fill
- 两个表点击分页的时候怎么判断点的是哪一个表_如何对指数估值,估值表怎么用?...
- 我的 CDMA 往事
- 解决Android的adb命令行报错Permission denied
- 财政bug之”Y2K Accounting Bug“
- 关于指针的一些基本常识
- 我的世界服务器起床地图维修,Minecraft·起床战争地图更新来了!地图“雪仗”全面解读!...
- 科研论文中,图片组合方法和导出高分辨率的方法
- 十大气势背景音乐(适合战队,广告招商会场用)
- 《百年孤独》读书笔记
- 书单丨跟着院士学区块链:系统理解区块链技术
热门文章
- Android 8.0/9.0 wifi 自动连接评分机制
- 小觅智能荣获2018年度AI赋能行业创新明星
- 你真的会用iCloud吗?众多隐藏功能+免费存储10W张照片
- Flutter 实现超人飞来,满屏的力量感动画
- Entity Framework Code First Migrations
- RISC-V MCU--基于嵌入式AI的智能防疫机器人
- 拼多多改销量有什么风险
- 爬虫-根据公司名抓取相关员工的linkedin数据
- 龙兵智能名片装修版v1.5.30 装饰装修 装饰 装饰小程序
- cosin等于多少,请问sin29.5度等于多少?