228002026-01-15 18:39:12algoproTrükkcpp17Elfogadva 60/6037ms3284 KiB
// UUID: c8084b56-a781-4c3b-bfbc-9eeb7a5b661f
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
using pll=pair<ll, ll>;

vector<vector<ll>> parent;
vector<ll> check;

bool bad;

ll fastPow(ll a, ll b, ll mod = 1e9+7){
	if (b == 0) return 1;
	if (b == 1) return a;
	ll res = fastPow(a, b / 2);
	if (b & 1) return res * res % mod * a % mod;
	return res * res % mod;
}

void dfs(ll x){
	for (auto& z:parent[x]){
		if (check[z]==-1){
			check[z]=(check[x]+1)%2;
			dfs(z);
		}
		else{
			if (check[z]==check[x]){
				bad=true;
				return;
			}
		}
	}
}

void v(){
	ll n, k; cin >> n >> k;
	bad=false;
	parent.assign(n+1, {});
	check.assign(n+1, -1);
	for (ll i=0; i<k; i++){
		ll a, b; cin >> a >> b;
		parent[a-1].push_back(b);
		parent[b].push_back(a-1);
	}
	ll out=-1;
	for (ll i=0; i<n+1; i++){
		if (check[i]==-1){
			out++;
			check[i]=0;
			dfs(i);
		}
		if (bad){
			cout << 0 << '\n';
			return;
		}
	}
	cout << fastPow(2, out) << '\n';
}

int main() {
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	ll t; cin >> t;
	while (t--) v();
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base60/60
1Elfogadva0/01ms316 KiB
2Elfogadva0/017ms1332 KiB
3Elfogadva3/31ms512 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms332 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva2/235ms2424 KiB
8Elfogadva2/235ms2344 KiB
9Elfogadva2/235ms2440 KiB
10Elfogadva2/235ms2236 KiB
11Elfogadva2/234ms2304 KiB
12Elfogadva2/234ms2120 KiB
13Elfogadva2/230ms3124 KiB
14Elfogadva2/232ms3260 KiB
15Elfogadva2/232ms3124 KiB
16Elfogadva2/232ms3232 KiB
17Elfogadva2/232ms3124 KiB
18Elfogadva2/232ms3284 KiB
19Elfogadva2/235ms2352 KiB
20Elfogadva2/235ms2492 KiB
21Elfogadva2/235ms2484 KiB
22Elfogadva2/235ms2452 KiB
23Elfogadva2/235ms2612 KiB
24Elfogadva2/235ms2500 KiB
25Elfogadva2/235ms2612 KiB
26Elfogadva2/230ms3212 KiB
27Elfogadva2/237ms2360 KiB
28Elfogadva2/232ms2120 KiB
29Elfogadva2/217ms2100 KiB
30Elfogadva2/216ms2100 KiB