Codeforces Round 639 (Div. 1)
C
Quantifier Question
Codeforces
2600
原题
← BD →
翻译中…

Logical quantifiers are very useful tools for expressing claims about a set. For this problem, let's focus on the set of real numbers specifically. The set of real numbers includes zero and negatives. There are two kinds of quantifiers: universal ($\forall$) and existential ($\exists$). You can read more about them here.

翻译中…

The universal quantifier is used to make a claim that a statement holds for all real numbers. For example:

翻译中…
  • $\forall x,x \lt 100$ is read as: for all real numbers $x$, $x$ is less than $100$. This statement is false.
  • $\forall x,x \gt x-1$ is read as: for all real numbers $x$, $x$ is greater than $x-1$. This statement is true.
翻译中…

The existential quantifier is used to make a claim that there exists some real number for which the statement holds. For example:

翻译中…
  • $\exists x,x \lt 100$ is read as: there exists a real number $x$ such that $x$ is less than $100$. This statement is true.
  • $\exists x,x \gt x-1$ is read as: there exists a real number $x$ such that $x$ is greater than $x-1$. This statement is true.
翻译中…

Moreover, these quantifiers can be nested. For example:

翻译中…
  • $\forall x,\exists y,x \lt y$ is read as: for all real numbers $x$, there exists a real number $y$ such that $x$ is less than $y$. This statement is true since for every $x$, there exists $y=x+1$.
  • $\exists y,\forall x,x \lt y$ is read as: there exists a real number $y$ such that for all real numbers $x$, $x$ is less than $y$. This statement is false because it claims that there is a maximum real number: a number $y$ larger than every $x$.
翻译中…

Note that the order of variables and quantifiers is important for the meaning and veracity of a statement.

翻译中…

There are $n$ variables $x_1,x_2,\ldots,x_n$, and you are given some formula of the form $$ f(x_1,\dots,x_n):=(x_{j_1} \lt x_{k_1})\land (x_{j_2} \lt x_{k_2})\land \cdots\land (x_{j_m} \lt x_{k_m}), $$

翻译中…

where $\land$ denotes logical AND. That is, $f(x_1,\ldots, x_n)$ is true if every inequality $x_{j_i} \lt x_{k_i}$ holds. Otherwise, if at least one inequality does not hold, then $f(x_1,\ldots,x_n)$ is false.

翻译中…

Your task is to assign quantifiers $Q_1,\ldots,Q_n$ to either universal ($\forall$) or existential ($\exists$) so that the statement $$ Q_1 x_1, Q_2 x_2, \ldots, Q_n x_n, f(x_1,\ldots, x_n) $$

翻译中…

is true, and the number of universal quantifiers is maximized, or determine that the statement is false for every possible assignment of quantifiers.

翻译中…

Note that the order the variables appear in the statement is fixed. For example, if $f(x_1,x_2):=(x_1 \lt x_2)$ then you are not allowed to make $x_2$ appear first and use the statement $\forall x_2,\exists x_1, x_1 \lt x_2$. If you assign $Q_1=\exists$ and $Q_2=\forall$, it will only be interpreted as $\exists x_1,\forall x_2,x_1 \lt x_2$.

翻译中…

Input

翻译中…

The first line contains two integers $n$ and $m$ ($2\le n\le 2\cdot 10^5$; $1\le m\le 2\cdot 10^5$) — the number of variables and the number of inequalities in the formula, respectively.

翻译中…

The next $m$ lines describe the formula. The $i$-th of these lines contains two integers $j_i$,$k_i$ ($1\le j_i,k_i\le n$, $j_i\ne k_i$).

翻译中…

Output

翻译中…

If there is no assignment of quantifiers for which the statement is true, output a single integer $-1$.

翻译中…

Otherwise, on the first line output an integer, the maximum possible number of universal quantifiers.

翻译中…

On the next line, output a string of length $n$, where the $i$-th character is "A" if $Q_i$ should be a universal quantifier ($\forall$), or "E" if $Q_i$ should be an existential quantifier ($\exists$). All letters should be upper-case. If there are multiple solutions where the number of universal quantifiers is maximum, print any.

翻译中…

Note

翻译中…

For the first test, the statement $\forall x_1, \exists x_2, x_1 \lt x_2$ is true. Answers of "EA" and "AA" give false statements. The answer "EE" gives a true statement, but the number of universal quantifiers in this string is less than in our answer.

翻译中…

For the second test, we can show that no assignment of quantifiers, for which the statement is true exists.

翻译中…

For the third test, the statement $\forall x_1, \forall x_2, \exists x_3, (x_1 \lt x_3)\land (x_2 \lt x_3)$ is true: We can set $x_3=\max\{x_1,x_2\}+1$.

翻译中…

样例

Input #1
2 1
1 2
Output #1
1
AE
InputCopy OutputCopy
Input #2
4 3
1 2
2 3
3 1
Output #2
-1
InputCopy OutputCopy
Input #3
3 2
1 3
2 3
Output #3
2
AAE
InputCopy OutputCopy
题目信息
题号
1344C
时间限制
1 s
内存限制
256 MB
标签
DFS 及类似
动态规划
图论
数学

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。