当前位置: 首页 > news >正文

105. 有向图的完全联通

105. 有向图的完全联通

题目描述

给定一个有向图,包含 N 个节点,节点编号分别为 1,2,...,N。现从 1 号节点开始,如果可以从 1 号节点的边可以到达任何节点,则输出 1,否则输出 -1。

输入描述

第一行包含两个正整数,表示节点数量 N 和边的数量 K。 后续 K 行,每行两个正整数 s 和 t,表示从 s 节点有一条边单向连接到 t 节点。

输出描述

如果可以从 1 号节点的边可以到达任何节点,则输出 1,否则输出 -1。

输入示例
4 4
1 2
2 1
1 3
2 4
输出示例
1
提示信息

从 1 号节点可以到达任意节点,输出 1。

数据范围:

1 <= N <= 100;
1 <= K <= 2000。

DFS实现

import collections
def dfs_search(startIndex, n, edges, visited):
    visited[startIndex] = True
    is_all_visited = True
    for i in range(1, n+1):
        if not visited[i]:
            is_all_visited = False
    if is_all_visited:
        return
    for next_index in edges[startIndex]:
        if not visited[next_index]:
            dfs_search(next_index, n, edges, visited)

if __name__ == '__main__':
    n, k = map(int, input().split())
    edges = collections.defaultdict(list)
    for _ in range(k):
        s, t= map(int, input().split())
        edges[s].append(t)
    visited = [False] * (n + 1)
    dfs_search(1, n, edges, visited)
    isAllVisited = True
    for i in range(1, n + 1):
        if not visited[i]:
            isAllVisited = False
    if isAllVisited:
        print(1)
    else:
        print(-1)

BFS实现

import collections
def bfs_search(edges, visited):
    startIndex = 1
    visited[startIndex] = True
    que = collections.deque([startIndex])
    while que:
        cur = que.popleft()
        for next_index in edges[cur]:
            if not visited[next_index]:
                visited[next_index] = True
                que.append(next_index)


if __name__ == '__main__':
    n, k = map(int, input().split())
    edges = collections.defaultdict(list)
    for _ in range(k):
        s, t= map(int, input().split())
        edges[s].append(t)
    visited = [False] * (n + 1)
    bfs_search(edges, visited)
    isAllVisited = True
    for i in range(1, n + 1):
        if not visited[i]:
            isAllVisited = False
    if isAllVisited:
        print(1)
    else:
        print(-1)

http://www.dtcms.com/a/83517.html

相关文章:

  • LangChain 基础
  • 【AI News | 20250322】每日AI进展
  • C++进阶——类与对象
  • 基于物理信息强化学习的非线性系统最优控制
  • Java面试黄金宝典10
  • CSRF SSRF RCE
  • Django 生产环境静态文件处理
  • 代码随想录算法训练营第十四天(2)|151.翻转字符串里的单词
  • Python Cookbook-4.9 从字典中取值
  • 探索 Ollama:开源大语言模型平台的无限可能​
  • 《大话数据结构》学习记录----第三章线性表
  • SPI 机制与 Spring Boot AutoConfiguration 对比解析
  • 基于linux平台的C语言入门教程(7)类型转换
  • 计算机网络高频(二)TCP/IP基础
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(六)
  • MQTT的安装和使用
  • Leetcode—15. 三数之和(哈希表—基础算法)
  • 【JAVA进阶篇教学】第十一篇:Java中ReentrantLock锁讲解
  • 基于Spring Boot的停车场管理系统的设计与实现(LW+源码+讲解)
  • 在 macOS 上配置 SSH 连接 GitHub
  • 希尔排序
  • C++脚本化方案调研
  • Axure PR 9.0(发音:Ack-sure)原型图工具入门教程:链接交互
  • 股指期货贴水波动,影响哪些投资策略?
  • 制作Oracle11g Docker 镜像
  • 协程的调度的对称与非对称
  • DeepSeek政务应用场景与解决方案【清华大学最新版】
  • 菜鸟之路Day25一一前端工程化(二)
  • 【数据结构进阶】位图
  • python学习笔记--实现简单的爬虫(一)