QOJ.ac

QOJ

時間限制: 3 s 記憶體限制: 1024 MB 總分: 10

#8404. 바이트랜드 현대화 [A]

统计

바이트족 마을이 현대화되고 있습니다. 최신 정부 프로젝트의 목표는 컴퓨터를 가지고 있지 않은 마을과 작은 도시의 주민들에게 컴퓨터를 보급하는 것입니다. 바이트자르는 프로그램 대상 마을 중 하나인 바이트오시체(Bajtoszyce)의 현대화 작업을 감독하고 있으며, 현재 이 마을의 주민 중 컴퓨터를 가진 사람은 아무도 없습니다.

바이트오시체에는 $n$명의 주민이 살고 있으며, 바이트자르는 편의를 위해 이들에게 $1$부터 $n$까지의 정수 번호를 매겼습니다. 처음에 주민 중 누구도 컴퓨터를 가지고 있지 않습니다. 바이트자르의 임무는 다음 세 가지 형태의 사건을 처리하는 것입니다.

  • $+ \ a_i \ b_i$ – 바이트오시체 주민에게 컴퓨터가 한 대 전달됩니다. 하지만 바이트자르는 컴퓨터가 $a_i$번 주민에게 전달되었는지 $b_i$번 주민에게 전달되었는지 알지 못합니다. $a_i = b_i$인 경우도 발생할 수 있으며, 이 경우 컴퓨터는 확실히 $a_i$번 주민에게 전달되었습니다. 컴퓨터는 현재 컴퓨터를 가지고 있지 않은 주민에게 전달되는 것이 확실합니다.
  • $- \ c_i$ – $c_i$번 주민의 컴퓨터가 고장 납니다. 이 주민은 지금까지 컴퓨터를 가지고 있었음이 확실합니다(하지만 이제는 가지지 않게 되었으므로, 나중에 다시 새 컴퓨터를 받을 수 있습니다).
  • $? \ d_i$ – 바이트자르는 지금까지 제공된 모든 정보를 사용하여 $d_i$번 주민이 현재 컴퓨터를 확실히 가지고 있는지, 확실히 가지고 있지 않은지, 아니면 가지고 있는지 알 수 없는지 판단해야 합니다.

바이트자르가 질문에 답할 수 있도록 돕는 프로그램을 작성하세요!

입력

입력의 첫 번째 줄에는 바이트오시체의 주민 수 $n$과 바이트자르가 처리해야 할 사건의 수 $q$가 주어집니다 ($1 \le n \le 300\,000$; $1 \le q \le 1\,000\,000$).

이어지는 $q$개의 줄에는 문제에서 설명한 사건들에 대한 정보가 주어집니다. 모든 사건에서 $1 \le a_i, b_i, c_i, d_i \le n$을 만족합니다.

바이트자르가 자신의 지식 상태에 대해 최소 한 번은 질문받는 것이 보장됩니다. 즉, 입력에는 최소 하나의 '?' 유형 사건이 포함됩니다. 또한, 컴퓨터를 항상 현재 가지고 있지 않은 사람이 받고, 컴퓨터가 항상 현재 가지고 있는 사람에게서 고장 나는 컴퓨터 전달 과정이 최소 하나 이상 존재함이 보장됩니다.

출력

출력에는 '?' 유형 사건의 수와 같은 길이의 문자열이 포함되어야 합니다. $i$번째 질문에서 해당 주민이 확실히 컴퓨터를 가지고 있다면 문자열의 $i$번째 문자는 '1'이어야 합니다. 해당 주민이 확실히 컴퓨터를 가지고 있지 않다면 '0'이어야 합니다. 해당 주민이 컴퓨터를 가지고 있을 수도 있고 아닐 수도 있다면 '?'여야 합니다.

예제

입력 1

5 11
? 1
+ 1 2
+ 2 3
? 2
+ 3 1
- 2
? 1
? 2
? 3
+ 2 2
? 2

출력 1

0?1011

참고

예제 설명: 처음에 아무도 컴퓨터를 가지고 있지 않으므로 첫 번째 질문에 대한 답은 부정이며, 출력의 첫 번째 문자는 '0'입니다. 그 후 두 대의 컴퓨터가 전달되고 두 번째 주민이 컴퓨터를 가지고 있는지 질문받습니다. 지금까지의 두 번의 전달 중 하나가 그에게 전달되었을 가능성도 있지만, 첫 번째 주민과 세 번째 주민이 각각 컴퓨터를 받았을 가능성도 있습니다. 따라서 두 번째 주민이 컴퓨터를 가지고 있는지 확실하게 단정할 수 없으므로 답은 '?'입니다. 다음 전달 이후에는 두 번째 주민이 이미 컴퓨터를 가지고 있었음이 확실해지지만, 질문 시점에는 바이트자르가 이를 알 수 없었음에 유의하세요.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.