车站分级 拓扑排序
时间:2022-06-19
本文章向大家介绍车站分级 拓扑排序,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
从起点到终点,只会在大于等于它等级的站点停靠,则小于它的不停靠
就从小于它的连一条边到它,然后拓扑
#include <bits/stdc++.h>
#define pir pair<int,int>
using namespace std;
const int N = 1050;
int in[N],n,m,ans;
int book[N][N],s[N][N];
int vis[N];
queue<pir> q;
vector<int> g[N];
int read(){
int x=0,dign=1;
char c = getchar();
while(c<'0'||c>'9'){
if(c=='-')dign=-1;
c = getchar();
}
while(c>='0'&&c<='9'){
x = x*10+c-'0';
c = getchar();
}
return x*dign;
}
void spfa(){
for(int i=1;i<=n;i++)if(!in[i])q.push(make_pair(i,1));//入度为0最低级1
ans = 1;
while(!q.empty()){
int u = q.front().first;
int val = q.front().second;q.pop();
for(int i=0;i<g[u].size();i++){
{
in[g[u][i]]--;
if(!in[g[u][i]])
{q.push(make_pair(g[u][i],val+1));
ans = max(val+1,ans);
}
}
}
}
}
int main()
{
n = read(); m = read();
for(int i=1;i<=m;i++){
s[i][0] = read();
memset(vis,0,sizeof(vis));
for(int j=1;j<=s[i][0];j++){
s[i][j] = read();
vis[s[i][j]] = 1;//在s[i][j]点停靠
}
for(int j=1;j<=s[i][0];j++)
for(int k=s[i][1];k<=s[i][s[i][0]];k++)
{
if(vis[k])continue;
{//对每条路
//起点到终点
if(!book[k][s[i][j]]){
book[k][s[i][j]]=1;//连一条k到s[i][j]的路
in[s[i][j]]++;
g[k].push_back(s[i][j]);
}
}
}
}
spfa();
printf("%dn",ans);
return 0;
}
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(64)-补充WebApi与Unity注入-配置文件
- 身临其境的建筑体验:3D打印和人工智能相结合的“星形胶质细胞”
- C语言真的太强大了,C几乎无处不在!
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MVC WebApi 用户验证 (1)
- 具有依赖关系的并行操作执行
- Silverlight初级教程-绘图布局
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(66)-MVC WebApi 用户验证 (2)
- 微信产品经理的妥协还是用户的需求?
- CSLA .NET 3.6支持Silverlight 2
- WCF技术剖析之二:再谈IIS与ASP.NET管道
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(61)-如何使用框架来开发
- (保存)C#基础概念二十五问
- flash留言本
- 这或许是2017年最有设计感的“无人车”推文
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 十分钟学会 HTML
- 聊一下会话跟踪技术
- 朝花夕拾之Matlab基础回顾:向量的点积、叉积、混合积
- 详解响应消息 response
- Kubernetes 1.19.0——deployment(3)
- Selenium-01-测试环境搭建使用
- Selenium-02-常用元素定位
- SpringBoot + Vue 前后端分离项目下载视频文件踩坑记录
- Selenium-03-常用方法
- 用Python里面的Xpath完成一个在线汇率转换器
- 详解请求消息 resquest
- Android中窗口Input事件接收
- Linux下常用命令
- Cypress系列(53)- as() 命令详解
- Educational Codeforces Round 81 (Rated for Div. 2) A. Display The Number