1 条题解

  • 0
    @ 2025-3-7 16:57:57
    #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
    上传者