day53-graph theory-part04-8.24

2024-08-24 17:36
文章标签 graph theory part04 8.24 day53

本文主要是介绍day53-graph theory-part04-8.24,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

tasks for today:

1. 110.字符串接龙

2. 105.有向图的完全可达性

3. 106.岛屿的周长

------------------------------------------------------------------------------------

1. 110.字符串接龙

the shitty configuration on kc web is disgusting

pay attention to the list form string and oure string

the path + 1 should not be directly assigned to path

from collections import deque, defaultdictdef main():n = int(input())startStr, endStr = input().split()strSet = []for i in range(n):strSet.append(input())# print(n, strSet)bfsQueue = deque()visited = defaultdict()bfsQueue.append(startStr)visited[startStr] = 1while bfsQueue:curStr = bfsQueue.popleft()path = visited[curStr]for i in range(len(curStr)):newStr = list(curStr)for j in range(26):newStr[i] = chr(ord('a')+j)# print(''.join(newStr))# print(bfsQueue)# print(visited.keys())new = ''.join(newStr)if new == endStr: print(path+1)returnif (new in strSet) and (new not in visited):visited[new] = path + 1bfsQueue.append(new)print(0)returnif __name__ == "__main__":main()

2. 105.有向图的完全可达性

this practice is suitable for using adjcent table

from collections import defaultdictdef dfs(graph, visited, key):if visited[key]:return visited[key] = Truekeys = graph[key]for i in keys:dfs(graph, visited, i)def main():n, m = map(int, input().split())graph = defaultdict(list)visited = [False] * nfor i in range(m):start, end = map(int, input().split())graph[start-1].append(end-1)# print(graph)dfs(graph, visited, 0)for i in range(n):if visited[i] == False:print(-1)returnprint(1)returnif __name__ == "__main__":main()

3. 106.岛屿的周长

pay attention to this practice, this is related to the perimeter of island, instead of the area.

It is not necessary to use BFS or DFS in this practice.

def main():n, m = map(int, input().split())graph = []for _ in range(n):graph.append(list(map(int, input().split())))total = 0cover = 0for i in range(n):for j in range(m):if graph[i][j] == 1:total += 1if i-1 >= 0 and graph[i-1][j] == 1: cover += 1if j-1 >= 0 and graph[i][j-1] == 1: cover += 1result = total * 4 - cover * 2print(result)if __name__ == "__main__":main()

这篇关于day53-graph theory-part04-8.24的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103146

相关文章

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

SIGMOD-24概览Part7: Industry Session (Graph Data Management)

👇BG3: A Cost Effective and I/O Efficient Graph Database in ByteDance 🏛机构:字节 ➡️领域: Information systems → Data management systemsStorage management 📚摘要:介绍了字节新提出的ByteGraph 3.0(BG3)模型,用来处理大规模图结构数据 背景

A Comprehensive Survey on Graph Neural Networks笔记

一、摘要-Abstract 1、传统的深度学习模型主要处理欧几里得数据(如图像、文本),而图神经网络的出现和发展是为了有效处理和学习非欧几里得域(即图结构数据)的信息。 2、将GNN划分为四类:recurrent GNNs(RecGNN), convolutional GNNs,(GCN), graph autoencoders(GAE), and spatial–temporal GNNs(S

Neighborhood Homophily-based Graph Convolutional Network

#paper/ccfB 推荐指数: #paper/⭐ #pp/图结构学习 流程 重定义同配性指标: N H i k = ∣ N ( i , k , c m a x ) ∣ ∣ N ( i , k ) ∣ with c m a x = arg ⁡ max ⁡ c ∈ [ 1 , C ] ∣ N ( i , k , c ) ∣ NH_i^k=\frac{|\mathcal{N}(i,k,c_{

【代码随想录|回溯part04】

代码随想录|回溯part04 1、46.全排列2、47.全排列 II3.问题 总结 python 1、46.全排列 46.全排列 class Solution:def permute(self, nums):result = []self.backtracking

【代码随想录|贪心part04以后——重叠区间】

代代码随想录|贪心part04以后——重叠区间 一、part041、452.用最少数量的箭引爆气球2、435. 无重叠区间2、763.划分字母区间3、56. 合并区间4、738.单调递增的数字 总结 python 一、part04 1、452.用最少数量的箭引爆气球 452. 用最少数量的箭引爆气球 class Solution:def findMinArrowShot

boost.graph之属性

相关宏 BOOST_INSTALL_PROPERTY #define BOOST_INSTALL_PROPERTY(KIND, NAME) \template <> struct property_kind<KIND##_##NAME##_t> { \typedef KIND##_property_tag type; \} 最终形式为 template <> struct proper

【ZOJ】3874 Permutation Graph 【FFT+CDQ分治】

传送门:【ZOJ】3874 Permutation Graph 题目分析: 容易知道一个个连通块内部的标号都是连续的,否则一定会有另一个连通块向这个连通块建边,或者这个连通块向另一个连通块建边。而且从左到右左边的连通块内最大的标号小于右边连通块内最小的标号。 然后我们可以构造dp方程: dp[n]=n!−i!∗dp[n−i] \qquad \qquad dp[n] = n! - i! *

【HDU】5333 Undirected Graph【LCT+BIT】

传送门:【HDU】5333 Undirected Graph my  code: my~~code: #pragma comment(linker, "/STACK:1024000000")#include <stdio.h>#include <string.h>#include <map>#include <algorithm>using namespace std ;typed

CodeForces 404C Restore Graph

题意: n个点的图  最大度为k  已知从某个点到每个点的距离dis[i]  求  这幅图的边 思路: 告诉了距离  很容易想到dis是从距离为0的那个点开始bfs求出来的 那么复原这幅图的办法就是重新构造这棵bfs形成的树就好了 每层利用点数计算一下是不是违反了最大度k的限制 这里注意  只有dis=0的那个点可以连出k条边  其余的只有k-1条(因为它们还和父亲连着一条边)