230822026-01-16 11:44:50algoproTrükkcpp17Accepted 60/6039ms3308 KiB
// UUID: 62c3ccc5-90ca-4aa8-9202-2cc869f3b475
    #include <bits/stdc++.h>
    
    using namespace std;
    
    #define ll long long
    #define fs first
    #define sc second
    #define pb push_back
    #define pll pair<ll, ll>
    #define vll vector<ll>
    #define v2ll vector<vll>
    #define pqll priority_queue<ll>

    const ll mod = 1e9+7;
    const ll inf = LONG_LONG_MAX;

    ll n, k;
    vector<bool> vis, c;
    v2ll g;
    bool possible;

    void dfs(ll p) {
        vis[p] = 1;
        for (ll i : g[p]) {
            if (!vis[i]) {
                c[i] = 1-c[p];
                dfs(i);
            } else if (c[p] == c[i])
                possible = false;
        }
    }

    void solve()
    {
        cin >> n >> k;
        g.assign(n+1, vll(0, 0)); vis.assign(n+1, 0); c.assign(n+1, 0);
        possible = true;
        for (ll i = 0; i < k; i++) {
            ll a, b;
            cin >> a >> b;
            g[a-1].pb(b);
            g[b].pb(a-1);
        }
        ll ans = 0;
        dfs(0);
        if (possible) ans++;
        for (ll i = 1; i <= n; i++) {
            if (!possible) break;
            if (!vis[i]) {
                dfs(i);
                if (possible) {
                    ans *= 2;
                }
                else ans = 0;
                ans %= mod;
            }
        }
        cout << ans << '\n';
    }
    
    signed main()
    {
        ios_base::sync_with_stdio(false);
        cin.tie(NULL); cout.tie(NULL);
        ll t = 1;
        cin >> t;
        while(t--)
        {
            solve();
        }
        return 0;
    }
SubtaskSumTestVerdictTimeMemory
base60/60
1Accepted0/01ms500 KiB
2Accepted0/017ms1332 KiB
3Accepted3/31ms316 KiB
4Accepted3/31ms316 KiB
5Accepted3/31ms536 KiB
6Accepted3/31ms316 KiB
7Accepted2/239ms2200 KiB
8Accepted2/235ms2208 KiB
9Accepted2/235ms2332 KiB
10Accepted2/234ms2060 KiB
11Accepted2/232ms2100 KiB
12Accepted2/234ms2104 KiB
13Accepted2/232ms3052 KiB
14Accepted2/229ms3092 KiB
15Accepted2/230ms2872 KiB
16Accepted2/232ms3124 KiB
17Accepted2/232ms3136 KiB
18Accepted2/230ms3124 KiB
19Accepted2/235ms2272 KiB
20Accepted2/235ms2356 KiB
21Accepted2/235ms2188 KiB
22Accepted2/235ms2356 KiB
23Accepted2/235ms2552 KiB
24Accepted2/235ms2360 KiB
25Accepted2/235ms2356 KiB
26Accepted2/232ms3308 KiB
27Accepted2/235ms2356 KiB
28Accepted2/230ms1840 KiB
29Accepted2/217ms2084 KiB
30Accepted2/216ms2292 KiB