237092026-01-28 00:32:41abcdTrükkcpp17Elfogadva 60/6090ms1872 KiB
#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/31ms508 KiB
7Elfogadva2/286ms1632 KiB
8Elfogadva2/283ms1640 KiB
9Elfogadva2/286ms1800 KiB
10Elfogadva2/283ms1688 KiB
11Elfogadva2/286ms1668 KiB
12Elfogadva2/285ms1632 KiB
13Elfogadva2/272ms1300 KiB
14Elfogadva2/271ms1360 KiB
15Elfogadva2/272ms1368 KiB
16Elfogadva2/274ms1360 KiB
17Elfogadva2/272ms1396 KiB
18Elfogadva2/271ms1360 KiB
19Elfogadva2/290ms1848 KiB
20Elfogadva2/286ms1840 KiB
21Elfogadva2/286ms1872 KiB
22Elfogadva2/282ms1496 KiB
23Elfogadva2/283ms1784 KiB
24Elfogadva2/282ms1616 KiB
25Elfogadva2/283ms1712 KiB
26Elfogadva2/272ms1392 KiB
27Elfogadva2/287ms1624 KiB
28Elfogadva2/278ms1568 KiB
29Elfogadva2/235ms1028 KiB
30Elfogadva2/235ms1212 KiB