227962026-01-15 18:38:01algoproTrükkcpp17Hibás válasz 20/6043ms2080 KiB
// UUID: 3e4cc980-69b2-42fb-af3b-da63de8ec683
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

const int MOD = 1e9+7;
vector<vector<int>> graf;
vector<int> paritas;
vector<bool> volt;
vector<int> parent;
bool impossible = false;

void dfs(int csucs, int prev_parity){
	if(prev_parity == 1){
		paritas[csucs] = 2;
	}
	else{
		paritas[csucs] = 1;
	}
	volt[csucs] = true;
	for(int x: graf[csucs]){
		if(x == parent[csucs]){
			continue;
		}
		if(volt[x]){
			if(paritas[csucs] == paritas[x]){
				impossible = true;
			}
		}
		else{
			parent[x] = csucs;
			dfs(x, paritas[csucs]);
		}
	}
}

ll hatvanyoz(int base, int exponent){
	ll hatvany = base;
	ll x = 1;
	for(int j = 0; j <= 30; j++){
		if((exponent >> j) & 1){
			x *= hatvany;
			x %= MOD;
		}
		hatvany *= hatvany;
		hatvany %= MOD;
	}
	return x;
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int t;
	cin >> t;
	for(int i = 0; i < t; i++){
		int n, k;
		cin >> n >> k;
		graf.clear();
		graf.resize(n+1);
		paritas.clear();
		paritas.resize(n+1, 0);
		volt.clear();
		volt.resize(n+1, false);
		parent.clear();
		parent.resize(n+1, -1);
		for(int j = 0; j < k; j++){
			int a, b;
			cin >> a >> b;
			graf[a-1].push_back(b);
			graf[b].push_back(a-1);
		}
		int component = 0;
		for(int j = 0; j <= n; j++){
			if(!volt[j]){
				dfs(j, 1);
				component++;
			}
		}
		if(impossible){
			cout << 0 << "\n";
			continue;
		}
		cout << hatvanyoz(2, component-1) << "\n";
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base20/60
1Elfogadva0/01ms316 KiB
2Elfogadva0/019ms1076 KiB
3Elfogadva3/31ms316 KiB
4Hibás válasz0/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Hibás válasz0/31ms316 KiB
7Elfogadva2/241ms1844 KiB
8Hibás válasz0/241ms1844 KiB
9Hibás válasz0/241ms1844 KiB
10Elfogadva2/239ms2080 KiB
11Elfogadva2/239ms1852 KiB
12Hibás válasz0/241ms1852 KiB
13Elfogadva2/230ms1452 KiB
14Hibás válasz0/230ms1552 KiB
15Hibás válasz0/232ms1516 KiB
16Elfogadva2/232ms1588 KiB
17Hibás válasz0/232ms1592 KiB
18Hibás válasz0/232ms1588 KiB
19Elfogadva2/241ms2036 KiB
20Hibás válasz0/241ms2028 KiB
21Hibás válasz0/241ms1844 KiB
22Hibás válasz0/241ms1844 KiB
23Hibás válasz0/241ms1844 KiB
24Hibás válasz0/241ms1912 KiB
25Hibás válasz0/241ms1844 KiB
26Hibás válasz0/232ms1588 KiB
27Hibás válasz0/243ms1844 KiB
28Hibás válasz0/237ms1588 KiB
29Elfogadva2/216ms1076 KiB
30Hibás válasz0/216ms1464 KiB