题解【洛谷P1983】[NOIP2013]车站分级
2024-10-08 11:13:51
题解
不难想到拓扑排序
于是每一个等级高的向等级低的连一条边
考虑拓扑排序过程中的分层
对于每个点进行分层
于是答案就是这些点中的最大层数
然后就会RE
发现我们多连了一些重复的边
用一个标记数组记录两个点之间是否连边即可
代码
#include <bits/stdc++.h>
using namespace std;
inline int gi()
{
int f = 1, x = 0; char c = getchar();
while (c < '0' || c > '9') {if (c == '-') f = -1; c = getchar();}
while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return f * x;
}
const int maxn = 1003;
int n, m, ans, g[maxn][maxn]/*输入数组*/;
int viss[maxn], b[maxn][maxn]/*标记是否连边*/, ceng[maxn]/*分层*/, in[maxn]/*统计入度*/;
vector <int> vv[maxn];//存图
inline void topsort()//拓扑排序
{
queue <int> q;
for (int i = 1; i <= n; i+=1) if (!in[i]) q.push(i), ceng[i] = 1;//初始化队列+分层
while (!q.empty())
{
int u = q.front(); q.pop();
int len = vv[u].size();
for (int i = 0; i < len; i+=1)
{
int v = vv[u][i];
if (!(--in[v])) ceng[v] = ceng[u] + 1/*分层*/, q.push(v);
}
}
for (int i = 1; i <= n; i+=1) ans = max(ans, ceng[i]);//计算答案
}
int main()
{
n = gi(), m = gi();
for (int i = 1; i <= m; i+=1)
{
g[i][0] = gi();
memset(viss, 0, sizeof(viss));//初始化
for (int j = 1; j <= g[i][0]; j+=1)
{
g[i][j] = gi();
viss[g[i][j]] = 1;//标记已经过该站点
}
for (int j = g[i][1]; j <= g[i][g[i][0]]; j+=1)
{
if (!viss[j])//没有经过该站点,说明该站点等级比经过的站点等级低
{
for (int k = 1; k <= g[i][0]; k+=1)
{
if (!b[j][g[i][k]])//没有边
{
vv[j].push_back(g[i][k]);//存图
b[j][g[i][k]] = 1;//标记有边
++in[g[i][k]];//统计入度
}
}
}
}
}
topsort();
printf("%d\n", ans);//输出答案
return 0;
}
最新文章
- 【开源】.Net 动态脚本引擎NScript
- MySQL+Amoeba实现数据库主从复制和读写分离
- 基于Ruby的watir-webdriver自动化测试方案与实施(三)
- Canvas 实现图片剪切
- 获取设备IMEI ,手机名称,系统SDK版本号,系统版本号
- UnicodeDecodeError: &#39;utf8&#39; codec can&#39;t decode byte 0xce in position 47: invalid continuation byte
- CCSprite setTextureRect 的坐标的坑
- web端测试和移动端测试的区别小记
- ppt打不出中文
- uri中为什么本地文件file后面跟三个斜杠, http等协议跟两个斜杠?
- 类型<;T>; where T:class的用法
- 用Python和Django实现多用户博客系统(二)——UUBlog
- 使用EMMET中的小坑
- 浮动层固定兼容IE6 position:fixed的最佳解决方案
- Java IO学习笔记四
- Nagios 监控系统架构
- I.MX 6UL与6ULL应用领域区别
- java --Integer 学习
- JVM方法调用过程
- redis 在 php 中的应用
热门文章
- idea 普通项目 改成 maven项目
- 通过/dev/mem操作物理内存
- ECMAScript 6基础
- idea中MavenWeb项目不能创建Servlet的解决办法
- WebDev.WebServer20.exe应用程序错误
- 电脑和手机上常用apk或Pc软件的重要目录或文件或文件夹路径
- 【easyui】treegrid逐级加载源码
- cat基础用法
- #4864. [BeiJing 2017 Wc]神秘物质 [FHQ Treap]
- django cookie session 自定义分页