https://www.acmicpc.net/problem/1803
입력
4 5
3 5 2 5
4 4 4 1 3
출력
0110
10110
if flag == -1:
my_state[num] = 1 #bow(my,num)
return -1
a_lookme = [[] for _ in range(an+1)]
b_lookme = [[] for _ in range(bn+1)]
for i in range(1,an+1):
b_lookme[a[i]].append(i)
for i in range(1,bn+1):
a_lookme[b[i]].append(i)
import sys
sys.setrecursionlimit(10**6)
import sys
sys.setrecursionlimit(10**6)
an, bn = [int(x) for x in input().split()]
a = [0] + [int(x) for x in input().split()]
b = [0] + [int(x) for x in input().split()]
state_a = [-1]*(an+1)
state_b = [-1]*(bn+1)
a_lookme = [[] for _ in range(an+1)]
b_lookme = [[] for _ in range(bn+1)]
for i in range(1,an+1):
b_lookme[a[i]].append(i)
for i in range(1,bn+1):
a_lookme[b[i]].append(i)
def shield(team, num):
global a, b, state_a, state_b, a_lookme, b_lookme
if team == a:
my = a
my_state = state_a
your = b
your_state = state_b
lookme = a_lookme
else:
my = b
my_state = state_b
your = a
your_state = state_a
lookme = b_lookme
my_state[num] = 0
flag = -1
for i in lookme[num]:
if your_state[i] == 1:
flag = 1
continue
if your_state[i] == 0:
continue
if bow(your, i) != -1:
flag = 1
if flag == -1:
my_state[num] = 1 #bow(my,num)
return -1
else:
return 1
def bow(team, num):
global a, b, state_a, state_b, a_lookme, b_lookme
if team == a:
my = a
my_state = state_a
your = b
your_state = state_b
lookme = a_lookme
else:
my = b
my_state = state_b
your = a
your_state = state_a
lookme = b_lookme
if your_state[my[num]] == 1:
my_state[num] = 0
return -1
my_state[num] = 1
your_state[my[num]] = 0
for i in lookme[num]:
if your_state[i] == 0:
continue
if your_state[i] == 1:
my_state[num] = 0 #shield(my,num)
shield(your,my[num])
return -1
if shield(your,i) == -1:
# print(f"{i}에서 방패 불가능")
my_state[num] = 0 #shield(my,num)
shield(your,my[num])
return -1
return 1
for i in range(1, an+1):
if state_a[i] == -1:
bow(a,i)
for i in range(1, bn+1):
if state_b[i] == -1:
bow(b,i)
print(*state_a[1:])
print(*state_b[1:])