227502026-01-15 17:53:06algoproTrükkcpp17Wrong answer 0/6093ms1864 KiB
// UUID: e2c7b3c2-b0af-4c1d-837d-f25d84081168
#include <bits/stdc++.h>
#include <vector>
using namespace std;


vector<vector<int>> feltetelek;
vector<bool> done;
vector<int> p;
bool err;
void melysegi(int v) {
	done[v] = true;
	for (int i:feltetelek[v]) {
		if (!done[i]) {
			if (p[v] == 0) p[i] = 1;
			else p[i] = 0;
			melysegi(i);
		}
		else if (p[i] == p[v]) {
			err = true;
		}
	}
}
int main() {
	int t;cin >> t;
	for (int T = 0;T < t;T++) {
		err = false;
		int n,k;cin >> n >> k;
		feltetelek.clear();
		done.clear();
		feltetelek.resize(n);
		done.resize(n);
		p = vector<int>(n, -1);
		for (int i = 0;i < k;i++) {
			int a,b;cin >> a >> b;
			feltetelek[a - 1].push_back(b - 1);
			feltetelek[b - 1].push_back(a - 1);
		}
		int c = 0;
		for (int i = 0;i < n;i++) {
			if (!done[i]) {
				c++;
				p[i] = 0;
				melysegi(i);
			}
		}
		if (err) cout << 0;
		else {
			int val = 1;
			for (int i = 0;i < c;i++) {
				val = (2 * val) % 1000000007;
			}
			cout << val;
		}
	}
}
SubtaskSumTestVerdictTimeMemory
base0/60
1Wrong answer0/02ms316 KiB
2Wrong answer0/043ms992 KiB
3Wrong answer0/31ms316 KiB
4Wrong answer0/31ms316 KiB
5Wrong answer0/31ms316 KiB
6Wrong answer0/31ms316 KiB
7Wrong answer0/290ms1604 KiB
8Wrong answer0/289ms1652 KiB
9Wrong answer0/290ms1716 KiB
10Wrong answer0/287ms1456 KiB
11Wrong answer0/290ms1588 KiB
12Wrong answer0/290ms1676 KiB
13Wrong answer0/274ms1428 KiB
14Wrong answer0/276ms1440 KiB
15Wrong answer0/275ms1448 KiB
16Wrong answer0/272ms1304 KiB
17Wrong answer0/275ms1556 KiB
18Wrong answer0/274ms1492 KiB
19Wrong answer0/293ms1660 KiB
20Wrong answer0/290ms1768 KiB
21Wrong answer0/289ms1780 KiB
22Wrong answer0/286ms1776 KiB
23Wrong answer0/286ms1568 KiB
24Wrong answer0/287ms1856 KiB
25Wrong answer0/287ms1864 KiB
26Wrong answer0/272ms1232 KiB
27Wrong answer0/290ms1660 KiB
28Wrong answer0/283ms1432 KiB
29Wrong answer0/237ms1288 KiB
30Wrong answer0/237ms1300 KiB