比赛 |
2024暑假C班集训D |
评测结果 |
WATTAMMMMM |
题目名称 |
沼泽鳄鱼 |
最终得分 |
20 |
用户昵称 |
彭欣越 |
运行时间 |
10.922 s |
代码语言 |
C++ |
内存使用 |
131.17 MiB |
提交时间 |
2024-07-13 10:14:45 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=2010;
int n,m,startt,endd,K,nf,head[N],f[22][5],mod[22],tot;
long long res;
struct node {
int idx,nxt;
}e[N];
void add (int u,int v) {
e[++tot].idx=v;
e[tot].nxt=head[u];
head[u]=tot;
}
void dfs (int idx,long long k) {
for (int i=head[idx];i;i=e[i].nxt) {
int flag=0;
for (int j=1;j<=nf;j++) {
if (f[j][(k+1)%mod[j]]==e[i].idx) {
flag=1;
break;
}
}
if (flag==0) {
if (k+1==K) {
if (e[i].idx==endd) {
res++;
res%=10000;
}
return;
}
dfs(e[i].idx,k+1);
}
}
}
int main () {
freopen("swamp.in","r",stdin);
freopen("swamp.out","w",stdout);
cin >> n >> m >> startt >> endd >> K;
for (int i=1;i<=m;i++) {
int u,v;
cin >> u >> v;
add(u,v);
add(v,u);
}
cin >> nf;
for (int i=1;i<=nf;i++) {
cin >> mod[i];
for (int j=0;j<mod[i];j++) {
cin >> f[i][j];
}
}
dfs(startt,0);
cout << res <<endl;
return 0;
}