228082026-01-15 18:53:21algoproTrükkcpp17Elfogadva 60/6076ms2160 KiB
// UUID: b49bda77-34a1-49ca-a1be-729dc2ad2c03
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
vector<vector<int>> graf;
vector<int> been;
bool mukszik;
void dfs(int x){
	for (int y : graf[x]){
		if (!been[y]){
			been[y] = -1*been[x];
			dfs(y);
		}
		if(been[y]+been[x]){
			mukszik = false;
			return;
		}
	}
}
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;
}

int main() {
	int t; cin>>t;
	while(t--){
		int n, k, c=-1; cin>>n>>k;
		graf.assign(n+1, {});
		been.assign(n+1, 0);
		for(int i=0; i<k; i++){
			int a, b; cin>>a>>b;
			a--;
			graf[a].push_back(b);
			graf[b].push_back(a);
		}
		mukszik = true;
		for(int i=0; i<n+1; i++){
			if(been[i]==0){
				been[i]=1;
				dfs(i);
				c++;
			}
			if(!mukszik){
				cout<<0<<endl;
				break;
			}
		}

		if(!mukszik)
			continue;
	 	cout <<	fastPow(2, c)<<endl;
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base60/60
1Elfogadva0/01ms316 KiB
2Elfogadva0/037ms1196 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms508 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva2/276ms1852 KiB
8Elfogadva2/275ms1760 KiB
9Elfogadva2/275ms1844 KiB
10Elfogadva2/276ms1684 KiB
11Elfogadva2/275ms1844 KiB
12Elfogadva2/275ms1868 KiB
13Elfogadva2/271ms2100 KiB
14Elfogadva2/271ms2084 KiB
15Elfogadva2/271ms2100 KiB
16Elfogadva2/271ms2040 KiB
17Elfogadva2/271ms2100 KiB
18Elfogadva2/271ms2096 KiB
19Elfogadva2/275ms1836 KiB
20Elfogadva2/275ms1744 KiB
21Elfogadva2/275ms1860 KiB
22Elfogadva2/275ms2024 KiB
23Elfogadva2/275ms1980 KiB
24Elfogadva2/276ms1844 KiB
25Elfogadva2/275ms1844 KiB
26Elfogadva2/271ms2160 KiB
27Elfogadva2/276ms1844 KiB
28Elfogadva2/272ms1588 KiB
29Elfogadva2/235ms1588 KiB
30Elfogadva2/235ms1588 KiB