Submission #43458607


Source Code Expand

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define op(x) ((x&1)?x+1:x-1)
#define odd(x) (x&1)
#define even(x) (!odd(x))
#define lc(x) (x<<1)
#define rc(x) (lc(x)|1)
#define lowbit(x) (x&-x)
#define mp(x,y) make_pair(x,y)
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
using namespace std;
const int MAXN = 17,mod = 998244353;

void add(ll& x, ll y) { x = (x + y >= mod) ? (x+y-mod) : (x+y); }
void sub(ll& x, ll y) { x = (x >= y) ? (x-y) : (x-y+mod); }
ll addv(ll x, ll y) { return (x + y >= mod) ? (x+y-mod) : (x+y); }
ll subv(ll x, ll y) { return (x >= y) ? (x-y) : (x-y+mod); }
//

ll P(ll x){
	return odd(x) ? (mod-1) : (1);
}

int n,m,G[MAXN][MAXN];

ll dp[1<<MAXN],cnt[1<<MAXN];

struct DSU{
	int fa[MAXN];
	void init(){
		iota(fa,fa+n,0);
	}
	int find(int x){
		return (fa[x] == x) ? (x) : (fa[x] = find(fa[x]));
	}
	void merge(int x,int y){
		fa[find(x)] = find(y);
	}
}dsu;

int main(){
	cin>>n>>m;

	rep(i,1,m){
		int u,v;cin>>u>>v;
		u--;v--;
		G[u][v] = G[v][u] = 1;
	}

	rep(mask,1,(1<<n)-1){
		dsu.init();
		rep(u,0,n-1)rep(v,u+1,n-1)if((mask>>u&1) && (mask>>v&1) && G[u][v]){
			dsu.merge(u,v);
		}
		rep(u,0,n-1)if((mask>>u&1) && dsu.find(u) == u)cnt[mask]++;
	}

	dp[0] = 1;

	rep(S,0,(1<<n)-1){
		int U = ((1<<n)-1) ^ S;
		for(int T = U;T;T = (T-1)&U){
			add(dp[S^T],1ll*dp[S]*P(cnt[T]-1)%mod);
		}
	}

	cout<<dp[(1<<n)-1]<<endl;

    return 0;
}

Submission Info

Submission Time
Task Ex - Balance Scale
User Crying
Language C++ (GCC 9.2.1)
Score 650
Code Size 1534 Byte
Status AC
Exec Time 559 ms
Memory 5644 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 650 / 650
Status
AC × 3
AC × 73
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt, test_68.txt, test_69.txt, test_70.txt
Case Name Status Exec Time Memory
sample_01.txt AC 5 ms 3576 KB
sample_02.txt AC 2 ms 3384 KB
sample_03.txt AC 28 ms 3752 KB
test_01.txt AC 2 ms 3428 KB
test_02.txt AC 3 ms 3376 KB
test_03.txt AC 2 ms 3548 KB
test_04.txt AC 2 ms 3432 KB
test_05.txt AC 2 ms 3512 KB
test_06.txt AC 5 ms 3568 KB
test_07.txt AC 3 ms 3460 KB
test_08.txt AC 3 ms 3428 KB
test_09.txt AC 2 ms 3604 KB
test_10.txt AC 3 ms 3372 KB
test_11.txt AC 2 ms 3428 KB
test_12.txt AC 15 ms 3712 KB
test_13.txt AC 2 ms 3428 KB
test_14.txt AC 13 ms 3556 KB
test_15.txt AC 4 ms 3444 KB
test_16.txt AC 2 ms 3512 KB
test_17.txt AC 2 ms 3616 KB
test_18.txt AC 3 ms 3396 KB
test_19.txt AC 9 ms 3640 KB
test_20.txt AC 11 ms 3440 KB
test_21.txt AC 2 ms 3540 KB
test_22.txt AC 3 ms 3428 KB
test_23.txt AC 5 ms 3640 KB
test_24.txt AC 1 ms 3508 KB
test_25.txt AC 480 ms 5428 KB
test_26.txt AC 512 ms 5640 KB
test_27.txt AC 12 ms 3560 KB
test_28.txt AC 53 ms 3936 KB
test_29.txt AC 5 ms 3496 KB
test_30.txt AC 314 ms 5464 KB
test_31.txt AC 27 ms 3688 KB
test_32.txt AC 71 ms 4052 KB
test_33.txt AC 3 ms 3440 KB
test_34.txt AC 2 ms 3540 KB
test_35.txt AC 7 ms 3556 KB
test_36.txt AC 429 ms 5552 KB
test_37.txt AC 455 ms 5484 KB
test_38.txt AC 464 ms 5468 KB
test_39.txt AC 483 ms 5592 KB
test_40.txt AC 419 ms 5468 KB
test_41.txt AC 487 ms 5576 KB
test_42.txt AC 502 ms 5552 KB
test_43.txt AC 498 ms 5484 KB
test_44.txt AC 530 ms 5556 KB
test_45.txt AC 444 ms 5560 KB
test_46.txt AC 391 ms 5480 KB
test_47.txt AC 559 ms 5472 KB
test_48.txt AC 476 ms 5548 KB
test_49.txt AC 378 ms 5620 KB
test_50.txt AC 527 ms 5552 KB
test_51.txt AC 416 ms 5644 KB
test_52.txt AC 336 ms 5620 KB
test_53.txt AC 553 ms 5532 KB
test_54.txt AC 486 ms 5484 KB
test_55.txt AC 516 ms 5608 KB
test_56.txt AC 393 ms 5432 KB
test_57.txt AC 319 ms 5628 KB
test_58.txt AC 350 ms 5556 KB
test_59.txt AC 359 ms 5552 KB
test_60.txt AC 369 ms 5468 KB
test_61.txt AC 486 ms 5644 KB
test_62.txt AC 334 ms 5640 KB
test_63.txt AC 434 ms 5616 KB
test_64.txt AC 534 ms 5620 KB
test_65.txt AC 382 ms 5644 KB
test_66.txt AC 324 ms 5548 KB
test_67.txt AC 451 ms 5620 KB
test_68.txt AC 446 ms 5552 KB
test_69.txt AC 327 ms 5592 KB
test_70.txt AC 432 ms 5428 KB