212832026-01-12 17:48:03algoproTrükkcpp17Wrong answer 35/6078ms3256 KiB
// UUID: 45e02543-9b2f-4776-bcaa-d9c5a1ee48dd
#include <bits/stdc++.h>
using namespace std;

#define int long long


vector<vector<int>> a;
vector<int> vis;

bool dfs(int v){
	for(int x: a[v]){
		if(vis[x]==0){
			vis[x]=vis[v]^3;
			dfs(x);
		}else if(vis[x]==vis[v]){
			return false;
		}
	}
	return true;
}

int MOD=1e9+7;


signed main() {
	int t;cin>>t;
	while(t--){
		int n, k;cin>>n>>k;
		a.assign(n+1, {});
		for(int i=0;i<k;i++){
			int x, y;cin>>x>>y;
			x--;a[x].push_back(y);
			a[y].push_back(x);
		}
		vis.assign(n+1, 0);
		int komp=0;
		bool ans=true;
		for(int i=0;i<=n;i++){
			if(vis[i]==0){
				vis[i]=1;
				bool b=dfs(i);
				if(!b) ans=b;
				komp++;
			}
		}
		if(!ans){
			cout<<0<<'\n';continue;
		}
		int answ=1;
		for(int i=0;i<komp-1;i++){
			answ*=2;answ%=MOD;
		}
		cout<<answ<<'\n';
	}
}
SubtaskSumTestVerdictTimeMemory
base35/60
1Accepted0/01ms316 KiB
2Accepted0/039ms1332 KiB
3Accepted3/31ms316 KiB
4Wrong answer0/31ms316 KiB
5Accepted3/31ms316 KiB
6Accepted3/31ms316 KiB
7Accepted2/276ms2320 KiB
8Wrong answer0/278ms2360 KiB
9Wrong answer0/276ms2268 KiB
10Accepted2/276ms2132 KiB
11Wrong answer0/278ms2096 KiB
12Accepted2/276ms2088 KiB
13Accepted2/274ms3180 KiB
14Wrong answer0/275ms3124 KiB
15Wrong answer0/275ms3100 KiB
16Accepted2/274ms3256 KiB
17Wrong answer0/275ms3124 KiB
18Wrong answer0/272ms3120 KiB
19Accepted2/278ms2408 KiB
20Wrong answer0/276ms2356 KiB
21Wrong answer0/276ms2340 KiB
22Accepted2/276ms2404 KiB
23Accepted2/276ms2608 KiB
24Accepted2/276ms2560 KiB
25Accepted2/276ms2420 KiB
26Accepted2/272ms3124 KiB
27Wrong answer0/278ms2308 KiB
28Accepted2/272ms2100 KiB
29Accepted2/237ms2164 KiB
30Wrong answer0/235ms2100 KiB