蓝桥 发现环 (拓扑排序判环)

简介: 蓝桥 发现环 (拓扑排序判环)

小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。

不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了BUG。

为了恢复正常传输。小明需要找到所有在环路上的电脑,你能帮助他吗?

输入

第一行包含一个整数N。
以下N行每行两个整数a和b,表示a和b之间有一条数据链接相连。

对于30%的数据,1 <= N <= 1000
对于100%的数据, 1 <= N <= 100000, 1 <= a, b <= N

输入保证合法。

输出

按从小到大的顺序输出在环路上的电脑的编号,中间由一个空格分隔。

样例输入:
5
1 2
3 1
2 4
2 5
5 3

样例输出:
1 2 3 5

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;

int deg[1005];
int n;
vector<int> v[1005];
queue<int> q;

int main(){
   
    scanf("%d", &n);
    for (int i=1; i<=n; i++){
   
        int x, y;
        scanf("%d %d", &x, &y);
        deg[x]++, deg[y]++;
        v[x].push_back(y);
        v[y].push_back(x); 
    }
    for (int i=1; i<=n; i++){
   
        if (deg[i]==1){
   
            q.push(i);
        }
    }
    while (q.size()){
   
        int u=q.front();
        q.pop();
        deg[u]=-1;
        for (int i=0; i<v[u].size(); i++){
   
            deg[v[u][i]]--;
            if (deg[v[u][i]]==1){
   
                q.push(v[u][i]);
            } 
        }
    }
    for (int i=1; i<=n; i++){
   
        if (deg[i]>0){
   
            printf("%d ", i);
        }
    }
    printf("ok");
    return 0;
}
相关文章
|
9月前
|
缓存 API 数据库
Python性能优化利器:lru_cache装饰器详解
Python性能优化利器:lru_cache装饰器详解
|
人工智能 自然语言处理 运维
【新模型速递】PAI-Model Gallery云上一键部署Qwen3-Coder模型
Qwen3-Coder 是通义千问最新开源的 AI 编程大模型正式开源,拥有卓越的代码和 Agent 能力,在多领域取得了开源模型的 SOTA 效果。PAI 已支持最强版本 Qwen3-Coder-480B-A35B-Instruct 的云上一键部署。
|
Java 编译器 数据库
Java 中的注解(Annotations):代码中的 “元数据” 魔法
Java注解是代码中的“元数据”标签,不直接参与业务逻辑,但在编译或运行时提供重要信息。本文介绍了注解的基础语法、内置注解的应用场景,以及如何自定义注解和结合AOP技术实现方法执行日志记录,展示了注解在提升代码质量、简化开发流程和增强程序功能方面的强大作用。
745 5
|
Linux 网络安全 Android开发
高级 ping 命令及技巧
Ping命令是一种常用的网络诊断工具,用于测试网络连接的可达性和延迟等信息
5295 57
|
存储 安全 Linux
Golang的GMP调度模型与源码解析
【11月更文挑战第11天】GMP 调度模型是 Go 语言运行时系统的核心部分,用于高效管理和调度大量协程(goroutine)。它通过少量的操作系统线程(M)和逻辑处理器(P)来调度大量的轻量级协程(G),从而实现高性能的并发处理。GMP 模型通过本地队列和全局队列来减少锁竞争,提高调度效率。在 Go 源码中,`runtime.h` 文件定义了关键数据结构,`schedule()` 和 `findrunnable()` 函数实现了核心调度逻辑。通过深入研究 GMP 模型,可以更好地理解 Go 语言的并发机制。
1031 1
|
存储 C++
【C++】二叉搜索树(BST)
二叉搜索树(Binary Search Tree, BST)是一种特殊的二叉树,其每个节点的左子树所有节点值小于该节点值,右子树所有节点值大于该节点值,且左右子树也均为二叉搜索树。BST支持高效的数据查找、插入和删除操作,时间复杂度通常为O(log n)。本文档详细介绍了BST的基本概念、存储结构及其实现,包括迭代和递归两种方式的查找、插入、删除等操作的具体代码示例。
762 3
|
存储 机器学习/深度学习 算法
【优选算法】—— 前缀和算法
【优选算法】—— 前缀和算法
1067 0
|
安全
qt.qpa.xcb: could not connect to display 问题解决
【5月更文挑战第16天】qt.qpa.xcb: could not connect to display qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. 问题解决
9456 1
|
JSON API 数据格式
python的request库如何拿到json的返回值
python的request库如何拿到json的返回值
1914 0
|
人工智能 关系型数据库 MySQL
入门篇:如何轻松安装Confluence, 打造团队协作的新篇章
入门篇:如何轻松安装Confluence, 打造团队协作的新篇章

热门文章

最新文章