diff --git "a/graph_traversal/\353\260\261\354\244\200_11403_\352\262\275\353\241\234\354\260\276\352\270\260.py" "b/graph_traversal/\353\260\261\354\244\200_11403_\352\262\275\353\241\234\354\260\276\352\270\260.py" new file mode 100644 index 0000000..3dfb904 --- /dev/null +++ "b/graph_traversal/\353\260\261\354\244\200_11403_\352\262\275\353\241\234\354\260\276\352\270\260.py" @@ -0,0 +1,34 @@ +#간선추가할 때, 양쪽에서 이어지는 것인 줄 알았는데 +#하나만 추가하면 됐었다. +from collections import deque +n = int(input()) +num=[[] for _ in range(n)] + +for i in range(n): + x=list(map(int,input().split())) + for j in range(n): + if x[j]==1: + num[i].append(j) + +def bfs(a): + visit=[0]*n + q=deque() + q.append(a) + while q: + x=q.popleft() + for nx in num[x]: + if visit[nx]==0: + visit[nx]=1 + q.append(nx) + return visit + +for i in range(n): + result=bfs(i) + for j in range(n): + print(result[j],end=' ') + print() + +#메모리 : 34140 kb +#시간 : 80 ms +#코드길이 : 597 b +#풀이시간 : 30분(대충) \ No newline at end of file diff --git "a/graph_traversal/\353\260\261\354\244\200_12851_\354\210\250\353\260\224\352\274\255\354\247\2102.py" "b/graph_traversal/\353\260\261\354\244\200_12851_\354\210\250\353\260\224\352\274\255\354\247\2102.py" new file mode 100644 index 0000000..e4c6fce --- /dev/null +++ "b/graph_traversal/\353\260\261\354\244\200_12851_\354\210\250\353\260\224\352\274\255\354\247\2102.py" @@ -0,0 +1,34 @@ +# 다시풀기 +from collections import deque +n,k=map(int,input().split()) +gragh=[0]*100001 +visit=[0]*100001 + +cnt=0 +res=0 +q=deque() + +def bfs(a): + global res,cnt + q.append(a) + while q: + x=q.popleft() + temp=gragh[x] + if x==k: + cnt+=1 + res=temp + continue + for nx in [x-1,x+1,2*x]: + if 0<=nx<100001 and (gragh[nx]==0 or gragh[nx]==gragh[x]+1): + gragh[nx]=gragh[x]+1 + q.append(nx) + return res,cnt + +x,y=bfs(n) +print(x) +print(y) + +#메모리 : 38468 kb +#시간 : 380 ms +#코드길이 : 547 b +#풀이시간 : 53분 \ No newline at end of file diff --git "a/graph_traversal/\353\260\261\354\244\200_13549_\354\210\250\353\260\224\352\274\255\354\247\2103.py" "b/graph_traversal/\353\260\261\354\244\200_13549_\354\210\250\353\260\224\352\274\255\354\247\2103.py" new file mode 100644 index 0000000..6455752 --- /dev/null +++ "b/graph_traversal/\353\260\261\354\244\200_13549_\354\210\250\353\260\224\352\274\255\354\247\2103.py" @@ -0,0 +1,27 @@ +# gragh초기화 값을 0에서 -1로만 바꾸어주니까 바로 성공했다.. 왜지? +from collections import deque +n,k = map(int,input().split()) +gragh=[-1]*100001 +gragh[n]=0 +q=deque() +q.append(n) +cnt=0 + +while q: + x=q.popleft() + if x==k: + print(gragh[x]) + break + for nx in [x-1,x+1,x*2]: + if 0<=nx<100001 and gragh[nx]==-1: + if nx==x*2: + gragh[nx]=gragh[x] + q.appendleft(nx) + else: + gragh[nx]=gragh[x]+1 + q.append(nx) + +#메모리 : 35364 kb +#시간 : 132 ms +#코드길이 : 444 b +#풀이시간 : 34분 \ No newline at end of file diff --git "a/graph_traversal/\353\260\261\354\244\200_16928_\353\261\200\352\263\274\354\202\254\353\213\244\353\246\254\352\262\214\354\236\204.py" "b/graph_traversal/\353\260\261\354\244\200_16928_\353\261\200\352\263\274\354\202\254\353\213\244\353\246\254\352\262\214\354\236\204.py" new file mode 100644 index 0000000..249ab0d --- /dev/null +++ "b/graph_traversal/\353\260\261\354\244\200_16928_\353\261\200\352\263\274\354\202\254\353\213\244\353\246\254\352\262\214\354\236\204.py" @@ -0,0 +1,41 @@ +from collections import deque +n,m = map(int,input().split()) +sa={} +snake={} +for i in range(n): + x,y = map(int,input().split()) + sa[x]=y +for i in range(m): + u,v=map(int,input().split()) + snake[u]=v + +gragh=[0]*101 + +visit=[0]*101 + +def bfs(a): + q=deque() + q.append(a) + while q: + x=q.popleft() + if x==100: + return gragh[100] + for i in range(1,7): + nx=x+i + if 03,3->1, 5->5 이런식으로 사이클이 생겨야 하는 건 알겠다. +# 이걸 어떻게 구현해야 하는지는 모르겠다. + +n = int(input()) +num={} +for i in range(1,n+1): + num[i]=int(input()) + +# dfs로 풀기 +# 정점들을 돌면서 연결이 되는지 파악,, diff --git "a/graph_traversal/\353\260\261\354\244\200_3055_\355\203\210\354\266\234.py" "b/graph_traversal/\353\260\261\354\244\200_3055_\355\203\210\354\266\234.py" new file mode 100644 index 0000000..1a4fab2 --- /dev/null +++ "b/graph_traversal/\353\260\261\354\244\200_3055_\355\203\210\354\266\234.py" @@ -0,0 +1,33 @@ +# 다시 풀기..(이해는 되지만 구현을 못하겠다) +from collections import deque + +r,c = map(int,input().split()) +gragh=[] +for i in range(r): + gragh.append(list(input())) + +dx=[0,0,-1,1] +dy=[1,-1,0,0] + +visit=[[0]*c for _ in range(r)] + +q=deque() + +def bfs(a,b): + q.append((a,b)) + while q: + x,y=q.popleft() + + for i in range(4): + nx=x+dx[i] + ny=y+dy[i] + if 0<=nx