拓扑排序 --- AtCode - 3596
题目链接:
https://cn.vjudge.net/problem/1137733/origin
拓扑排序的基本思想:
https://blog.csdn.net/qq_41713256/article/details/80805338
其实拓扑排序的基本思想不断分离节点,一直到分离完为止。其要求在一个有向图中,对所有的节点进行排序,要求没有一个节点指向它前面的节点。
具体操作是:
step1:统计所有节点的入度。
step2:对于入度为0的节点就可以分离出来,然后把这个节点指向的节点的入度减一。
step3:一直做改操作,直到所有的节点都被分离出来。
而这道题的意思就是要求你找到一个长度最小的通路。
下面是这道题的AC代码:
#include <bits/stdc++.h> using namespace std;
const int MX = +;
int mp[MX][MX];
int vis[MX]; int main()
{
int ans = ;
int n, m;
scanf("%d%d", &n, &m);
for(int i = ; i <= m; ++i) //初始化
{
int x, y;
scanf("%d%d", &x, &y);
vis[x]++; vis[y]++; //统计度数
mp[x][y] = mp[y][x] = ;
}
while(true)
{
bool flag = true; // 用于判断是否结束
int pos = ;
for(int i = ; i <= n; ++i)
{
if(vis[i] == ) //当度数是1时需要把它分离出来!
{
ans++;
pos = i;
flag = false; // 仍有度数的点,故不可结束循环
vis[i]--;
break;
}
}
if(flag) break; // 若没有有度数的点则循环结束
for(int i = ; i <= n; ++i)
{
if(mp[pos][i] == ) //根据拓扑排序该点连的另外一边也度数减一
{
vis[i]--;
}
}
}
printf("%d\n", ans);
}
题解在代码间,有疑问可以在评论区留言
拓扑排序 --- AtCode - 3596的更多相关文章
- 算法与数据结构(七) AOV网的拓扑排序
今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...
- 有向无环图的应用—AOV网 和 拓扑排序
有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...
- 【BZOJ-2938】病毒 Trie图 + 拓扑排序
2938: [Poi2000]病毒 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 609 Solved: 318[Submit][Status][Di ...
- BZOJ1565 [NOI2009]植物大战僵尸(拓扑排序 + 最大权闭合子图)
题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=1565 Description Input Output 仅包含一个整数,表示可以 ...
- 图——拓扑排序(uva10305)
John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...
- Java排序算法——拓扑排序
package graph; import java.util.LinkedList; import java.util.Queue; import thinkinjava.net.mindview. ...
- poj 3687(拓扑排序)
http://poj.org/problem?id=3687 题意:有一些球他们都有各自的重量,而且每个球的重量都不相同,现在,要给这些球贴标签.如果这些球没有限定条件说是哪个比哪个轻的话,那么默认的 ...
- 拓扑排序 - 并查集 - Rank of Tetris
Description 自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球 ...
- *HDU1285 拓扑排序
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
随机推荐
- Java 并发类
java.util.concurrent包里 提供了一批线程安全的类 一. java.util.concurrent.atomic java.util.concurrent.atomic包里的原子处理 ...
- PDF如何设置书签,怎么在PDF上添加书签
PDF文件现在作为我们使用最多的一种办公文件,当然我们在使用PDF文件的同时还会需要编辑PDF文件,在使用一个PDF文件页数比较多的时候就需要添加书签,不然每次使用的时候都需要从头开始查找是很麻烦又头 ...
- 性能测试四十六:Linux 从网卡模拟延时和丢包的实现
Linux 中模拟延时和丢包的实现 使用ifconfig命令查看网卡 Linux 中使用 tc 进行流量管理.具体命令的使用参考 tc 的 man 手册,这里简单记录一下使用 tc 模拟延时和丢包的命 ...
- ps和AI使用过程中的易错点整理
ps:1.视图工具:1)标尺2)参考线3)网格:视图-->--显示>-->网格4)修改网格:编辑-->首选项>-->参考线.网格和切片 5)放大工具:画布中单击可放 ...
- 论文阅读笔记十一:Rethinking Atrous Convolution for Semantic Image Segmentation(DeepLabv3)(CVPR2017)
论文链接:https://blog.csdn.net/qq_34889607/article/details/8053642 摘要 该文重新窥探空洞卷积的神秘,在语义分割领域,空洞卷积是调整卷积核感受 ...
- idea首次创建新模块的详细操作
依赖网址:https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api/3.1.0 https://mvnrepository. ...
- 常见的User-Agent及免费代理IP网站
常见的User-Agent 1.Android Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 ...
- Vue-切割json数组字符串并循环输出
Json "detailList":[ " 04/08/2016 - LA - - Dept. - TITLE (Lien Reported)", " ...
- github.com加速节点
github.com加速节点 192.30.253.118 github.com192.30.253.119 github.com93.46.8.89 github.com
- 在IDEA中编写Spark的WordCount程序
1:spark shell仅在测试和验证我们的程序时使用的较多,在生产环境中,通常会在IDE中编制程序,然后打成jar包,然后提交到集群,最常用的是创建一个Maven项目,利用Maven来管理jar包 ...