Submission #1095897

#TimeUsernameProblemLanguageResultExecution timeMemory
1095897alexander707070Amusement Park (CEOI19_amusementpark)C++14
19 / 100
3055 ms216828 KiB
#include<bits/stdc++.h>
#define MAXN 600007
using namespace std;

const int mod=998244353;

int n,m,a[4000],b[4000];

int perm[20],ans;

set< pair< vector<int> , int> > s;

void check(){
    int c=0;
    vector<int> w;
    for(int i=1;i<=m;i++){
        if(perm[a[i]]>perm[b[i]]){
            c++; w.push_back(1);
        }else{
            w.push_back(0);
        }
    }

    s.insert({w,c});
}

int main(){

    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>a[i]>>b[i];
    }

    for(int i=1;i<=n;i++)perm[i]=i;

    do{
        check();
    }while(next_permutation(perm+1,perm+n+1));

    for(pair<vector<int>,int> curr:s){
        ans+=curr.second; ans%=mod;
    }

    cout<<ans<<"\n";


    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...