213192026-01-12 18:25:57algoproTrükkpypy3Accepted 60/60233ms41704 KiB
# UUID: f3d6e7a0-a56c-4e42-980c-1b3d69e537f1
from sys import stdin

def modpow(a, n, M):
    e = 1
    while n:
        if n % 2:
            e *= a
            e %= M
        n //= 2
        a *= a
        a %= M
    return e


def megold():
    N, K = (int(x) for x in input().split())
    elek = {0: []}
    for _ in range(K):
        a, b = stdin.readline().split()
        a = int(a) - 1; b = int(b)
        elek.setdefault(a, []).append(b)
        elek.setdefault(b, []).append(a)
    jart = dict((cs, 0) for cs in elek.keys())
    k = 0
    for cs in elek.keys():
        if jart[cs]:
            continue
        k += 1
        sor = [cs]
        jart[cs] = 1
        while sor:
            cs2 = sor.pop()
            j2 = jart[cs2]
            for cs3 in elek[cs2]:
                j3 = jart[cs3]
                if j3 == 0:
                    jart[cs3] = -j2
                    sor.append(cs3)
                elif j3 == j2:
                    return 0
    k += N - len(elek)
    return modpow(2, k, 10**9 + 7)


T = int(input())
for i in range(T):
    print(megold())

SubtaskSumTestVerdictTimeMemory
base60/60
1Accepted0/043ms19604 KiB
2Accepted0/0135ms30444 KiB
3Accepted3/343ms19868 KiB
4Accepted3/339ms19804 KiB
5Accepted3/346ms19944 KiB
6Accepted3/343ms19936 KiB
7Accepted2/2201ms39488 KiB
8Accepted2/2204ms39804 KiB
9Accepted2/2203ms38676 KiB
10Accepted2/2194ms40276 KiB
11Accepted2/2172ms39396 KiB
12Accepted2/2201ms40228 KiB
13Accepted2/2141ms26948 KiB
14Accepted2/2126ms27000 KiB
15Accepted2/2133ms26300 KiB
16Accepted2/2137ms27024 KiB
17Accepted2/2135ms27108 KiB
18Accepted2/2142ms26596 KiB
19Accepted2/2233ms40936 KiB
20Accepted2/2188ms41240 KiB
21Accepted2/2193ms41704 KiB
22Accepted2/2196ms37608 KiB
23Accepted2/2164ms36452 KiB
24Accepted2/2160ms36576 KiB
25Accepted2/2178ms36328 KiB
26Accepted2/2148ms27364 KiB
27Accepted2/2182ms40916 KiB
28Accepted2/2160ms38360 KiB
29Accepted2/2103ms23528 KiB
30Accepted2/2100ms24040 KiB