fork download
  1. #include <cstdio>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. const int MOD = 55566677;
  6.  
  7. int n,m,x[25],y[25];
  8. int day[60],chp[60],s[60]={1};
  9.  
  10. int dfs(int i, int t){
  11. if(i==m){
  12. if(t%2) return (MOD-s[n-t])%MOD; else
  13. return s[n-t];
  14. }
  15. int ret=dfs(i+1,t);
  16. if(!day[x[i]] && !chp[y[i]]){
  17. day[x[i]]=chp[y[i]]=1;
  18. ret=(ret+dfs(i+1,t+1))%MOD;
  19. day[x[i]]=chp[y[i]]=0;
  20. }
  21. return ret;
  22. }
  23.  
  24. int main(){
  25. for(int i=1;i<60;i++) s[i]=s[i-1]*1ll*i%MOD;
  26. while(scanf("%d%d",&n,&m)==2){
  27. for(int i=0;i<m;i++) scanf("%d%d",x+i,y+i);
  28. for(int i=0;i<m;i++) for(int j=i+1;j<m;j++){
  29. if(x[i]==x[j] && y[i]==y[j]){
  30. swap(x[j],x[m-1]);
  31. swap(y[j],y[--m]);
  32. }
  33. }
  34. printf("%d\n",dfs(0,0));
  35. }
  36. }
  37.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty