212692026-01-12 17:38:04algoproTrükkcpp17Wrong answer 0/6076ms2100 KiB
// UUID: 14a6f1f4-d88f-4586-8937-e1caf5416766
#include <bits/stdc++.h>
using namespace std;

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;


int main() {
	int t;cin>>t;
	while(t--){
		int n, k;cin>>n>>k;
		a.assign(n, {});
		for(int i=0;i<k;i++){
			int x, y;cin>>x>>y;
			x--;y--;a[x].push_back(y);
			a[y].push_back(x);
		}
		vis.assign(n, 0);
		vis[0]=1;
		int komp=0;
		bool ans=true;
		for(int i=0;i<n;i++){
			if(vis[i]!=0){
				bool b=dfs(i);
				if(!b) ans=b;
				komp++;
			}
		}
		if(!ans){
			cout<<0<<'\n';continue;
		}
		int answ=1;
		for(int i=0;i<komp;i++){
			answ*=2;answ%=MOD;
		}
		cout<<answ<<'\n';
	}
}
SubtaskSumTestVerdictTimeMemory
base0/60
1Accepted0/01ms316 KiB
2Wrong answer0/037ms1076 KiB
3Wrong answer0/31ms508 KiB
4Wrong answer0/31ms316 KiB
5Wrong answer0/31ms316 KiB
6Wrong answer0/31ms316 KiB
7Wrong answer0/275ms1800 KiB
8Wrong answer0/275ms1844 KiB
9Wrong answer0/275ms1812 KiB
10Wrong answer0/275ms1588 KiB
11Wrong answer0/275ms1588 KiB
12Wrong answer0/275ms1820 KiB
13Wrong answer0/271ms2000 KiB
14Wrong answer0/271ms2100 KiB
15Wrong answer0/271ms2100 KiB
16Wrong answer0/271ms2100 KiB
17Wrong answer0/271ms2096 KiB
18Wrong answer0/270ms2072 KiB
19Wrong answer0/276ms1840 KiB
20Wrong answer0/274ms1844 KiB
21Wrong answer0/272ms1680 KiB
22Wrong answer0/274ms1844 KiB
23Wrong answer0/276ms1884 KiB
24Wrong answer0/275ms1944 KiB
25Wrong answer0/275ms1984 KiB
26Wrong answer0/271ms2100 KiB
27Wrong answer0/276ms1828 KiB
28Wrong answer0/272ms1692 KiB
29Wrong answer0/235ms1776 KiB
30Wrong answer0/235ms1576 KiB