227942026-01-15 18:36:56algoproTrükkcpp17Elfogadva 60/6086ms1872 KiB
// UUID: 191aef9e-f742-4079-b75d-8d6750758dbe
#include <bits/stdc++.h>
using namespace std;
using pii=pair<int,int>;

const int M=1e9+7;

bool dfs(vector<vector<int>>& adj, vector<int>& c, int v){
	for(int u:adj[v]){
		if(c[u]==0){
			if(c[v]==1)c[u]=2;
			else c[u]=1;
			if (!dfs(adj,c,u)) return false;
		}else if(c[u]==c[v])return false;
	}
	return true;
}

int main() {
	int t;cin>>t;
	while(t--){
		int n,k;cin>>n>>k;
		vector<vector<int>> adj(n+1);
		for(int i=0;i<k;i++){
			int a,b;cin>>a>>b;
			adj[a-1].push_back(b);
			adj[b].push_back(a-1);
		}
		vector<int> c(n+1);
		bool ok=true;
		int cnt=0;
		for(int i=0;i<=n;i++){
			if(c[i]==0){
				cnt++;
				if(!dfs(adj,c,i)) ok=false;
			}
		}
		if(!ok){
			cout<<"0\n";
			continue;
		}
		int ans=1;
		for(int i=1;i<cnt;i++){
			ans=1LL*ans*2%M;
		}
		cout<<ans<<'\n';
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base60/60
1Elfogadva0/01ms316 KiB
2Elfogadva0/041ms1076 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva2/285ms1776 KiB
8Elfogadva2/285ms1676 KiB
9Elfogadva2/285ms1604 KiB
10Elfogadva2/285ms1556 KiB
11Elfogadva2/285ms1612 KiB
12Elfogadva2/283ms1640 KiB
13Elfogadva2/272ms1184 KiB
14Elfogadva2/271ms1364 KiB
15Elfogadva2/272ms1288 KiB
16Elfogadva2/274ms1276 KiB
17Elfogadva2/272ms1392 KiB
18Elfogadva2/271ms1552 KiB
19Elfogadva2/286ms1868 KiB
20Elfogadva2/286ms1616 KiB
21Elfogadva2/285ms1872 KiB
22Elfogadva2/283ms1660 KiB
23Elfogadva2/283ms1616 KiB
24Elfogadva2/283ms1616 KiB
25Elfogadva2/283ms1616 KiB
26Elfogadva2/272ms1456 KiB
27Elfogadva2/285ms1784 KiB
28Elfogadva2/278ms1416 KiB
29Elfogadva2/235ms1168 KiB
30Elfogadva2/235ms1076 KiB