提交时间:2024-11-12 13:27:35
运行 ID: 34615
#include<bits/stdc++.h> #define int long long using namespace std; const int mod=998244353; const int maxn=1e5+7; int n,m,k; int P[maxn][4]; struct ed{ int u,v; ed(int _u=0,int _v=0){u=_u,v=_v;} }; ed e[maxn]; inline void BF(){ int ret=0; for(int S=0;S<(1<<n);S++){ int cnt=0; for(int i=1;i<=m;i++){ if((S&(1<<e[i].u-1))&&(S&(1<<e[i].v-1)))++cnt; } ret+=P[cnt][k];ret%=mod; } cout<<ret<<endl; return; } int B[maxn]; inline void Init(){ B[0]=1; for(int i=1;i<=n;i++)B[i]=(B[i-1]<<1)%mod; } inline void sub1(){ cout<<m*B[n-2]%mod<<endl; return; } signed main(){ cin>>n>>m>>k; for(int i=1;i<=m;i++){ int u,v; cin>>u>>v; e[i]=ed(u,v); P[i][0]=1; for(int j=1;j<=k;j++)P[i][j]=P[i][j-1]*i%mod; } if(n<=20){ BF(); return 0; } if(k==1){ sub1(); return 0; } }