#P4494. [HAOI2018] 反色游戏

[HAOI2018] 反色游戏

题目描述

CC和小GG经常在一起研究搏弈论问题,有一天他们想到了这样一个游戏. 有一个nn个点mm条边的无向图,初始时每个节点有一个颜色,要么是黑色,要 么是白色.现在他们对于每条边做出一次抉择:要么将这条边连接的两个节点都 反色(黑变白,白变黑),要么不作处理.他们想把所有节点都变为白色,他们 想知道在2m2^m种决策中,有多少种方案能达成这个目标. 小GG认为这个问题太水了,于是他还想知道,对于第ii个点,在删去这个点及 与它相连的边后,新的答案是多少. 由于答案可能很大,你只需要输出答案对109+710^9+7取模后的结果.

输入格式

从文件game.ingame.in中读入数据. 第一行一个整数TT,表示数据组数. 每组数据第一行两个整数nn,mm表示点数和边数. 接下来mm行,每行两个整数uu,vv,描述无向图的一条边. 接下来一行一个长度为nn0/10/1串,如果第ii个字符为00表示第ii个点为白色,否 则为黑色.

输出格式

输出到文件game.outgame.out中. 每组数据输出一行n+1n+1个整数,第一个整数表示不删去任何点时的答案.接 下来nn个整数,第ii个表示删去第ii个点时的答案.

2
5 5
1 2
2 3
3 4
2 4
3 5
00000
5 4
1 2
2 3
2 4
2 5
11111
2 2 1 1 1 2
0 1 0 1 1 1

提示

对于所有数据,有1T51\le T\le5,1n,m1051\le n,m\le10^5,1u,vn1\le u,v\le n,没有重边和自 环. HAOI2018 round1 T2