1 条题解
-
0
#include<bits/stdc++.h> #define int long long using namespace std; int n,m,q,ans; int x[45],a[36*36+5],b[36*36+5]; vector<int> e[45]; bool vis[45]; bool check(int now){ for(int i=0;i<e[now].size();i++){ if(!vis[e[now][i]]){ return true; } } return false; } void dfs(int now,int sum){ if(now>n){ ans+=sum; ans%=q; return; } vis[now]=true; dfs(now+1,(sum*x[now])%q); vis[now]=false; if(!check(now)){ dfs(now+1,sum); } } signed main(){ cin>>n>>m>>q; for(int i=1;i<=n;i++){ cin>>x[i]; } for(int i=1;i<=m;i++){ cin>>a[i]>>b[i]; e[max(a[i],b[i])].push_back(min(a[i],b[i])); } dfs(1,1); ans%=q; cout<<ans; }
- 1
信息
- ID
- 1782
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 61
- 已通过
- 2
- 上传者