当前位置: 首页 > 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)

相关文章:

  • 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
  • 多地跟进官宣下调公积金贷款利率,最低降至2.1%
  • 华为招聘:未与任何第三方开展过任何形式的实习合作
  • 上海营商环境的“分寸”感:底线之上不断拓宽自由,底线之下雷霆制止
  • 外交部回应中美经贸高层会谈:这次会谈是应美方请求举行的
  • 潘功胜:降准0.5个百分点,降低政策利率0.1个百分点
  • 杨国荣︱《老子智慧八十一讲》及其他