题目链接:

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的更多相关文章

  1. 算法与数据结构(七) AOV网的拓扑排序

    今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...

  2. 有向无环图的应用—AOV网 和 拓扑排序

    有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...

  3. 【BZOJ-2938】病毒 Trie图 + 拓扑排序

    2938: [Poi2000]病毒 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 609  Solved: 318[Submit][Status][Di ...

  4. BZOJ1565 [NOI2009]植物大战僵尸(拓扑排序 + 最大权闭合子图)

    题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=1565 Description Input Output 仅包含一个整数,表示可以 ...

  5. 图——拓扑排序(uva10305)

    John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...

  6. Java排序算法——拓扑排序

    package graph; import java.util.LinkedList; import java.util.Queue; import thinkinjava.net.mindview. ...

  7. poj 3687(拓扑排序)

    http://poj.org/problem?id=3687 题意:有一些球他们都有各自的重量,而且每个球的重量都不相同,现在,要给这些球贴标签.如果这些球没有限定条件说是哪个比哪个轻的话,那么默认的 ...

  8. 拓扑排序 - 并查集 - Rank of Tetris

    Description 自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球 ...

  9. *HDU1285 拓扑排序

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

随机推荐

  1. 大明A+B

    大明A+B 时间限制: 1 Sec  内存限制: 32 MB 以内加法的那个"小明"了,现在他甚至会任意长度的正小数的加法.现在,给你两个正的小数A和B,你的任务是代表大明计算出A ...

  2. Vuex状态管理模式的面试题及答案

    转载:点击查看原文 1.vuex有哪几种属性? 答:有五种,分别是 State. Getter.Mutation .Action. Module 2.vuex的State特性是? 答: 一.Vuex就 ...

  3. C++ Primer 笔记——语句

    switch 内部的变量定义 1.因为C++语言规定,不允许跨过变量的初始化语句直接跳转到该变量作用域内的另一位置,所以有了如下情况: bool bsuccess = false; switch (b ...

  4. 静态属性property

    静态属性property(是通过对象去使用) property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 1 . 通过@property修饰过的函数属性,调用的时候无需在加() cla ...

  5. .NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能

    .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...

  6. 一脸懵逼学习KafKa集群的安装搭建--(一种高吞吐量的分布式发布订阅消息系统)

    kafka的前言知识: :Kafka是什么? 在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算.kafka是一个生产-消费模型. Producer:生产者,只负责数 ...

  7. 将Elasticsearch的快照备份到HDFS

    1.安装Elasticsearch插件repository-hdfs 下载地址:https://artifacts.elastic.co/downloads/elasticsearch-plugins ...

  8. [转] Webpack 打包优化之体积篇

    谈及如今欣欣向荣的前端圈,不仅有各类框架百花齐放,如Vue, React, Angular等等,就打包工具而言,发展也是如火如荼,百家争鸣:从早期的王者Browserify, Grunt,到后来赢得宝 ...

  9. [转]Java Web笔记:搭建环境和项目配置(MyEclipse 2014 + Maven + Tomcat)

    来源:http://www.jianshu.com/p/56caa738506a 0. 绪言 Java Web开发中,除了基础知识外,开发环境搭建,也是一项基本功.开发环境包括了IDE.项目管理.项目 ...

  10. net core体系-web应用程序-4asp.net core2.0 项目实战(1)-9项目各种全局帮助类

    本文目录 1.  前沿2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装3.XmlHelper快速操作xml文档4.SerializationHe ...