만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Ili

면접 대비

시간 제한4초메모리 제한1024 MB

요약
일부 OR 게이트의 출력값이 주어진 회로에서, 입력선 값을 어떻게 정하든 값이 하나로 고정되는 게이트 출력을 모두 찾아 표시한다.
난이도

보통10점 중 7점

유형
그래프, DFS, 구현, 수학
정답자
아직 제출이 없습니다

문제

미르코는 작업실에서 간단한 논리 회로를 만들고 있다. 회로는 x1,x2,…,xnx_1, x_2, \ldots, x_n으로 표시하는 시작 전선 nn개와 c1,c2,…,cmc_1, c_2, \ldots, c_m으로 표시하는 OR 논리 소자 mm개로 이루어진다. 각 소자에는 입력이 정확히 두 개, 출력이 하나 있다. 각 입력은 시작 전선 xjx_j 또는 다른 소자 cjc_j의 출력에 연결된다. 물론 논리 회로에는 사이클이 없으며, 더 나아가 cjc_j의 입력은 i<ji < j일 때만 cic_i의 출력에 연결될 수 있다.

회로의 각 시작 전선에는 값 0 또는 1을 줄 수 있다. 각 소자의 출력값은 두 입력의 논리 OR 연산 결과이다. 즉 두 입력값이 모두 0이면 0이고, 그렇지 않으면 1이다.

미르코는 시작 전선의 값을 모르지만, 꼼꼼히 측정해서 일부 소자의 출력값을 알아냈다. 측정 결과를 바탕으로 유일하게 결정할 수 있는 나머지 출력값을 모두 구하시오.

입력

첫째 줄에 시작 전선의 수 nn과 소자의 수 mm이 양의 정수로 주어진다.

둘째 줄에 정확히 mm글자인 문자열이 주어진다. jj번째 글자는 측정한 소자 cjc_j의 출력값이며, 미르코가 그 값을 측정하지 않았다면 ?이다.

다음 mm개의 줄 중 jj번째 줄에는 소자 cjc_j의 두 입력 레이블이 주어진다. 각 레이블은 시작 전선을 뜻하는 xi 꼴(1≤i≤n1 \le i \le n)이거나 소자를 뜻하는 ci 꼴(1≤i<j1 \le i < j)이다. 소자 cjc_j의 두 입력은 같을 수도 있다. 측정값은 서로 모순되지 않는다고 가정해도 좋다.

출력

첫째 줄에 mm글자인 문자열을 출력한다. jj번째 글자는 cjc_j의 출력값이어야 하고, 그 값을 유일하게 결정할 수 없다면 ?이어야 한다.

예제2

  1. 예제 1

    입력
    4 4
    10??
    x1 x2
    x2 x3
    x3 x4
    x1 c3
    
    예상 출력
    10?1
    
  2. 예제 2

    입력
    4 5
    11???
    x1 x2
    x3 x4
    x1 x3
    x2 x4
    c3 c4
    
    예상 출력
    11??1