Submission #1865435
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 forE(i,x) for(int i=head[x];i!=-1;i=ne[i])
using namespace std;
typedef long long i64;
typedef unsigned long long u64;
typedef unsigned u32;
typedef pair<int,int> pin;
#define mk(a,b) make_pair(a,b)
#define lowbit(x) ((x)&(-(x)))
#define sqr(a) ((a)*(a))
#define clr(a) (memset((a),0,sizeof(a)))
#define ls ((x)<<1)
#define rs (((x)<<1)|1)
#define mid (((l)+(r))>>1)
#define pb push_back
#define w1 first
#define w2 second
inline void read(int &x){
x=0;int f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
x*=f;
}
inline void judge(){
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
}
/*******************************head*******************************/
const int maxn=205;
int head[maxn],t[maxn<<1],ne[maxn<<1],num,C[maxn][maxn],dfn[maxn],low[maxn],S[maxn];
bool vis[maxn],ins[maxn];
const int mod=1e9+7;
inline int powmod(int a,int b){
int res=1;for(;b;b>>=1){
if(b&1)res=1ll*res*a%mod;
a=1ll*a*a%mod;
}return res;
}
inline void addedge(int x,int y){
ne[++num]=head[x];head[x]=num;t[num]=y;
ne[++num]=head[y];head[y]=num;t[num]=x;
}
bool flag[maxn];
int ans,n,m,k,clk,top;
inline void calc(int x,int y){
int cntv=0,cnte=0;
memset(flag,0,sizeof(flag));cntv=flag[y]=1;
for(;S[top+1]!=x;flag[S[top--]]=1,++cntv);
rep(w,1,n)if(flag[w])forE(i,w)cnte+=flag[t[i]];cnte/=2;
if(cnte<cntv){
ans=1ll*ans*k%mod;
return;
}
if(cnte>cntv){
ans=1ll*ans*C[cnte+k-1][k-1]%mod;
return;
}
int res=0;
rep(i,1,cntv){
res=(res+powmod(k,__gcd(i,cntv)))%mod;
}
ans=1ll*res*ans%mod*powmod(cntv,mod-2)%mod;
}
inline void dfs(int x){
S[++top]=x;dfn[x]=low[x]=++clk;
forE(i,x)
if (dfn[t[i]])
low[x]=min(low[x],dfn[t[i]]);
else{
dfs(t[i]),low[x]=min(low[x],low[t[i]]);
if (low[t[i]]>=dfn[x])
calc(t[i],x);
}
}
inline void prprpr(){
rep(i,0,200){
C[i][0]=1;
rep(j,1,i)C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
}
}
int main(){
read(n);read(m);read(k);
rep(i,1,n)head[i]=-1;
rep(i,1,m){
int x,y;read(x);read(y);
addedge(x,y);
}prprpr();ans=1;
rep(i,1,n)if(!dfn[i])dfs(i);
printf("%d\n",ans);
return 0;
}
Submission Info
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
1300 / 1300 |
Status |
|
|
Set Name |
Test Cases |
Sample |
0_000.txt, 0_001.txt, 0_002.txt |
All |
0_000.txt, 0_001.txt, 0_002.txt, 1_003.txt, 1_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 1_011.txt, 1_012.txt, 1_013.txt, 1_014.txt, 1_015.txt, 1_016.txt, 1_017.txt, 1_018.txt, 1_019.txt, 1_020.txt, 1_021.txt, 1_022.txt, 1_023.txt, 1_024.txt, 1_025.txt, 1_026.txt, 1_027.txt, 1_028.txt, 1_029.txt, 1_030.txt, 1_031.txt, 1_032.txt, 1_033.txt, 1_034.txt, 1_035.txt, 1_036.txt, 1_037.txt, 1_038.txt, 1_039.txt, 1_040.txt, 1_041.txt, 1_042.txt, 1_043.txt, 1_044.txt, 1_045.txt, 1_046.txt, 1_047.txt, 1_048.txt, 1_049.txt, 1_050.txt, 1_051.txt, 1_052.txt, 1_053.txt, 1_054.txt, 1_055.txt, 1_056.txt, 1_057.txt, 1_058.txt, 1_059.txt, 1_060.txt, 1_061.txt, 1_062.txt, 1_063.txt |
Case Name |
Status |
Exec Time |
Memory |
0_000.txt |
AC |
1 ms |
384 KB |
0_001.txt |
AC |
1 ms |
384 KB |
0_002.txt |
AC |
1 ms |
384 KB |
1_003.txt |
AC |
1 ms |
384 KB |
1_004.txt |
AC |
1 ms |
384 KB |
1_005.txt |
AC |
1 ms |
384 KB |
1_006.txt |
AC |
1 ms |
384 KB |
1_007.txt |
AC |
1 ms |
384 KB |
1_008.txt |
AC |
1 ms |
384 KB |
1_009.txt |
AC |
1 ms |
384 KB |
1_010.txt |
AC |
1 ms |
384 KB |
1_011.txt |
AC |
1 ms |
384 KB |
1_012.txt |
AC |
1 ms |
384 KB |
1_013.txt |
AC |
1 ms |
384 KB |
1_014.txt |
AC |
1 ms |
384 KB |
1_015.txt |
AC |
1 ms |
384 KB |
1_016.txt |
AC |
1 ms |
384 KB |
1_017.txt |
AC |
1 ms |
384 KB |
1_018.txt |
AC |
1 ms |
384 KB |
1_019.txt |
AC |
1 ms |
384 KB |
1_020.txt |
AC |
1 ms |
384 KB |
1_021.txt |
AC |
1 ms |
384 KB |
1_022.txt |
AC |
1 ms |
384 KB |
1_023.txt |
AC |
1 ms |
384 KB |
1_024.txt |
AC |
1 ms |
384 KB |
1_025.txt |
AC |
1 ms |
384 KB |
1_026.txt |
AC |
1 ms |
384 KB |
1_027.txt |
AC |
1 ms |
384 KB |
1_028.txt |
AC |
1 ms |
384 KB |
1_029.txt |
AC |
1 ms |
384 KB |
1_030.txt |
AC |
1 ms |
384 KB |
1_031.txt |
AC |
1 ms |
384 KB |
1_032.txt |
AC |
1 ms |
384 KB |
1_033.txt |
AC |
1 ms |
384 KB |
1_034.txt |
AC |
1 ms |
384 KB |
1_035.txt |
AC |
1 ms |
384 KB |
1_036.txt |
AC |
1 ms |
384 KB |
1_037.txt |
AC |
1 ms |
384 KB |
1_038.txt |
AC |
1 ms |
384 KB |
1_039.txt |
AC |
1 ms |
384 KB |
1_040.txt |
AC |
1 ms |
384 KB |
1_041.txt |
AC |
1 ms |
384 KB |
1_042.txt |
AC |
1 ms |
384 KB |
1_043.txt |
AC |
1 ms |
384 KB |
1_044.txt |
AC |
1 ms |
384 KB |
1_045.txt |
AC |
1 ms |
384 KB |
1_046.txt |
AC |
1 ms |
384 KB |
1_047.txt |
AC |
1 ms |
384 KB |
1_048.txt |
AC |
1 ms |
384 KB |
1_049.txt |
AC |
1 ms |
384 KB |
1_050.txt |
AC |
1 ms |
384 KB |
1_051.txt |
AC |
1 ms |
384 KB |
1_052.txt |
AC |
1 ms |
384 KB |
1_053.txt |
AC |
1 ms |
384 KB |
1_054.txt |
AC |
1 ms |
384 KB |
1_055.txt |
AC |
1 ms |
384 KB |
1_056.txt |
AC |
1 ms |
384 KB |
1_057.txt |
AC |
1 ms |
384 KB |
1_058.txt |
AC |
1 ms |
384 KB |
1_059.txt |
AC |
1 ms |
384 KB |
1_060.txt |
AC |
1 ms |
384 KB |
1_061.txt |
AC |
1 ms |
384 KB |
1_062.txt |
AC |
1 ms |
384 KB |
1_063.txt |
AC |
1 ms |
384 KB |