228032026-01-15 18:40:21algoproTrükkcpp17Elfogadva 60/6035ms2356 KiB
// UUID: ca8dd8df-c00a-4130-8636-8d68a5be5014
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const ll mod = 1e9 + 7;
const int maxn = 2e4 + 3;
ll pows[maxn];
vector<vector<int>> g(maxn);
vector<int> volt(maxn);

void count_pows() {
	pows[0] = 1;
	for (int i = 1; i < maxn; i ++) pows[i] = (2 * pows[i - 1]) % mod;
}

bool dfs(int u, int val) {
	volt[u] = val;
	int val2 = 3 - val;
	for (int v : g[u]) {
		if (volt[v] == 0) {
			if (!dfs(v, val2)) return false;
		}
		if (volt[v] == val) return false;
	}
	return true;
}

void solve() {
	fill(g.begin(), g.end(), vector<int>());
	fill(volt.begin(), volt.end(), 0);
	int n, m; cin >> n >> m;
	for (int i = 0; i < m; i ++) {
		int u, v; cin >> u >> v;
		g[u - 1].push_back(v); g[v].push_back(u - 1);
	}
	int comps = 0;
	for (int i = 0; i <= n; i ++) {
		if (volt[i] == 0) {
			comps ++;
			if (!dfs(i, 1)) {
				cout << 0 << "\n"; return;
			}
		}
	}
	cout << pows[comps - 1] << "\n";
	return;
}

int main() {
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	count_pows();
	int t; cin >> t;
	while (t --) solve();
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base60/60
1Elfogadva0/02ms1076 KiB
2Elfogadva0/017ms1588 KiB
3Elfogadva3/32ms1272 KiB
4Elfogadva3/32ms1104 KiB
5Elfogadva3/32ms1076 KiB
6Elfogadva3/32ms892 KiB
7Elfogadva2/235ms2164 KiB
8Elfogadva2/229ms2072 KiB
9Elfogadva2/232ms2044 KiB
10Elfogadva2/232ms2072 KiB
11Elfogadva2/232ms2008 KiB
12Elfogadva2/229ms2096 KiB
13Elfogadva2/229ms2224 KiB
14Elfogadva2/229ms2352 KiB
15Elfogadva2/229ms2108 KiB
16Elfogadva2/230ms2348 KiB
17Elfogadva2/229ms2300 KiB
18Elfogadva2/230ms2300 KiB
19Elfogadva2/235ms2192 KiB
20Elfogadva2/232ms2100 KiB
21Elfogadva2/232ms2100 KiB
22Elfogadva2/230ms2296 KiB
23Elfogadva2/232ms2100 KiB
24Elfogadva2/230ms2288 KiB
25Elfogadva2/230ms2100 KiB
26Elfogadva2/229ms2356 KiB
27Elfogadva2/232ms2100 KiB
28Elfogadva2/229ms2056 KiB
29Elfogadva2/216ms1864 KiB
30Elfogadva2/216ms1588 KiB