题号:NC22756
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
小西和小理在路边捡到了好多的磁铁(路边为什么会有磁铁)
小理想到了一个很有意思的问题,对小西说:“我用这些磁铁考考你,你要是能答出来,就算你赢一局,怎么样?”
小西想都没想就答应了。
“听清楚了哦,我把这些磁铁从0到n编号,进行m次操作,要么将两个磁铁吸在一起,要么询问你两个磁铁是否吸在一起,怎么样?”
小西信心满满的说:“这还不容易,我之前练习过好久的这种问题了,这局你输定啦!”
小理白了他一眼:“哪有这么容易,询问你的结果,吸在一起用1来表示,否则用0来表示,所有询问所得到的数连起来可以得到一个二进制数,将这个二进制的数转化为十进制后对998244353取模,就是最终的答案~”
小西顿时慌了,他哪里会什么进制转换啊,不行,这一局不能再输了,于是他又跑过来向你求助,请问你可以帮他回答小理的问题吗?
(输入文件大于120Mb)
输入描述:
第一行包含两个整数n,m,表示磁铁的个数和操作数
接下来m行每行包括三个整数op,u,v。
如果op=0,则表示连接u,v;
如果op=1,则表示询问u,v是否吸在一起。
输出描述:
输出包括一个整数,表示答案,占一行
示例1
输入
复制
3 6
1 1 0
0 0 1
1 0 1
1 1 2
0 2 1
1 2 1