T713146 「奶龙」对话

题目背景

```cpp #ifdef yyy_is_looking #define 傻福 奶龙 #endif ``` 一天,「奶龙」在群里看到了如下对话: ![](https://cdn.luogu.com.cn/upload/image_hosting/xj7744g2.png) 「奶龙」觉得很有趣,于是开始思考,怎样才能让图中看似位于众矢之的的「刘🍮」不是傻福。 「奶龙」认为,一个傻福说的话不值得相信。因此,只要图中的人都是傻福就能达成自己的心愿。 但是,这样的对话太有趣的,让「奶龙」难以忘怀。它又编写了一百万条这样的对话。它想知道,有多少种给人物赋值的方法能使得「刘🍮」不是傻福。

题目描述

对话中共有 $n$ 个人,其中「刘🍮」为第 $1$ 个人,他们参与了 $m$ 条对话。每一条对话有一个说话人,内容形如以下两种格式之一: - 我是【】,我是傻福。 - 我是【】,我不是傻福。 若在同一个人所说的话中【】不唯一,那么这个人是傻福。 若说话人不是傻福,则满足【】是傻福 / 【】不是傻福。否则,**忽略这句话**。 对于一组对话,若一种把每个人赋值成傻福 / 不是傻福的方案满足了全部的对话且在这个赋值方案中「刘🍮」不是傻福,则称之为一种合法的赋值方案。 现在给定 $m$ 条对话,给定这 $m$ 条对话的说话人和【】,但是“是傻福”和“不是傻福”是**独立均匀随机**的。 现在,「奶龙」一眼秒了这个问题。为了向「奶龙」证明你不是傻福,你需要回答合法的赋值方案数的期望是多少?答案对 $998244353$ 取模。 注:$998244353$ 不是「奶龙」的 QQ 号。

输入格式

第一行两个正整数 $n$ 和 $m$,表示人数和对话数。 接下来 $n$ 行,每行 $2$ 个正整数。第 $i$ 行的两个正整数 $a_i$ 和 $b_i$ 分别表示第 $i$ 行对话的说话人和【】。

输出格式

一个正整数,表示答案。

说明/提示

**【样例解释】** 当对话形如:“「刘🍮」:「刘🍮」是傻福”,则没有合法方案。 当对话形如:“「刘🍮」:「刘🍮」不是傻福”则唯一的合法方案为:「刘🍮」不是傻福。 所以期望是 $\dfrac{1}{2}=499122177$。 **【数据范围】** 对于所有数据,满足: - $1 \le n,m \le 10^6$。 - $1 \le a_i,b_i \le n$。 对于 $10\%$ 的数据,满足 $n,m \le 10$。 对于 $30\%$ 的数据,满足 $n,m \le 20$。 对于 $60\%$ 的数据,满足 $n,m \le 10^3$。 对于 $100\%$ 的数据,满足 $n,m \le 10^6$。