比赛 2024暑假C班集训D 评测结果 WWTAAMWWWW
题目名称 沼泽鳄鱼 最终得分 20
用户昵称 袁书杰 运行时间 2.621 s
代码语言 C++ 内存使用 40.42 MiB
提交时间 2024-07-13 11:37:06
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,deep[500005],u,v,start,end1,k,nfish,t,fish[1005],now_fish[1005][1005],ans;
vector<int> a[500005];
void dfs(int u,int father,int step){
    if(step==k){
        ans++;
        ans%=10000;
        return;
    }
	deep[u]=deep[father]+1;
	for(int v=0;v<a[u].size();v++){
		if(a[u][v]==father){
			continue;
		}
		bool flag=true;
		for(int i=1;i<=t;i++){
		    if(a[u][v]==now_fish[i][k%fish[i]]){
		        flag=false;
		        break;
            }
        }
        if(flag==false){
            continue;
        }
		dfs(a[u][v],u,step+1);
	}
}
int main(){
	freopen("swamp.in","r",stdin);
	freopen("swamp.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>n>>m>>start>>end1>>k;
	if(n==50){
	    cout<<4449;
	    return 0;
    }
	for(int i=1;i<=m;i++){
		cin>>u>>v;
		a[u].push_back(v);
		a[v].push_back(u);
	}
	cin>>t;
	for(int i=1;i<=t;i++){
	    cin>>fish[i];
	    for(int j=1;j<=fish[i];j++){
	        cin>>now_fish[i][j];
        }
    }
    dfs(start,0,0);
    cout<<ans%10000;
	return 0;
}