leetcode 110 字符串接龙
def judge(s1, s2):
count = 0
for i in range(len(s1)):
if s1[i] != s2[i]:
count += 1
return count == 1
if __name__ == '__main__':
n = int(input())
begin_str, end_str = map(str, input().split())
if begin_str == end_str:
print(0)
exit()
strlist = []
for _ in range(n):
strlist.append(input())
visited = [False for _ in range(n)]
queue = [[begin_str, 1]]
while queue:
Str, step = queue.pop(0)
if judge(Str, end_str):
print(step + 1)
exit()
for i in range(n):
if visited[i] == False and judge(strlist[i], Str):
visited[i] = True
queue.append([strlist[i], step + 1])
print(0)
leetcode 105 有向图的完全联通
def dfs(grid, key, visited):
for value in grid[key]:
if not visited[value]:
visited[value] = True
dfs(grid, value, visited)
def main():
import sys
input = sys.stdin.read
data = input().split()
n = int(data[0])
m = int(data[1])
grid = [[] for _ in range(n + 1)]
index = 2
for _ in range(m):
s = int(data[index])
t = int(data[index + 1])
grid[s].append(t)
index += 2
visited = [False] * (n + 1)
visited[1] = True
dfs(grid, 1, visited)
for i in range(1, n + 1):
if not visited[i]:
print(-1)
return
print(1)
if __name__ == '__main__':
main()
leetcode 106 岛屿的周长
def main():
import sys
input = sys.stdin.read
data = input().split()
n, m = int(data[0]),int(data[1])
grid = []
index = 2
for _ in range(n):
grid.append([int(data[index + j]) for j in range(m)])
index += m
sum_land= 0
cover = 0
for i in range(n):
for j in range(m):
if grid[i][j] == 1:
sum_land += 1
if i - 1 >= 0 and grid[i - 1][j] == 1:
cover += 1
if j - 1 >= 0 and grid[i][j - 1] == 1:
cover += 1
result = sum_land * 4 - cover * 2
print(result)
if __name__ == '__main__':
main()