Submission #1695294
Source Code Expand
#include<bits/stdc++.h> #define N 100005 #define ll long long #define P 1000000007 using namespace std; int n,fa[N],b[N],rd[N],fl[N],sum[N]; void biu() { puts("0"); exit(0); } void dfs(int x) { if (fl[fa[x]]) biu(); rd[fa[x]]--;fl[fa[x]]=fl[x]+1;rd[x]=-1; if (rd[fa[x]]==0) dfs(fa[x]); } int F(int x,int k) { static int f[N]; f[0]=1;f[1]=2; for (int i=2;i<=x;i++) f[i]=(f[i-1]*2+(ll)f[i-2]*(i-1)%P*k)%P; return f[x]; } int G(int x,int k) { // cout<<x<<' '<<k<<endl; static int g[N]; g[0]=1;g[1]=1; for (int i=2;i<=x;i++) g[i]=(g[i-1]+(ll)g[i-2]*(i-1)%P*k)%P; return g[x]; } int main() { scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&fa[i]),rd[fa[i]]++; for (int i=1;i<=n;i++) if (rd[i]==0) dfs(i); int Ans=1; for (int i=1;i<=n;i++) if (rd[i]==1) { int x=i,y=fa[i],cnt=0,flag=0; b[++cnt]=fl[i]; if (fl[i]) flag=cnt; for (;y!=i;y=fa[y],x=fa[x]) { b[++cnt]=fl[y];rd[y]=0; if (fl[y]) flag=cnt; } //cout<<cnt<<' '<<flag<<endl; if (!flag) sum[cnt]++; else { flag=flag-cnt; for (int j=1;j<=cnt;j++) { //cout<<b[j]<<endl; if (b[j]) { if (b[j]>j-flag) biu(); if (b[j]<j-flag) Ans=Ans*2%P; flag=j; } } } } // cout<<Ans<<endl; for (int i=1;i<=n;i++) { // cout<<i<<' '<<sum[i]<<endl; if ((i&1)&&i!=1) Ans=(ll)Ans*F(sum[i],i)%P; else Ans=(ll)Ans*G(sum[i],i)%P; } printf("%d\n",Ans); }
Submission Info
Submission Time | |
---|---|
Task | E - Next or Nextnext |
User | miaom |
Language | C++14 (GCC 5.4.1) |
Score | 1400 |
Code Size | 1491 Byte |
Status | AC |
Exec Time | 13 ms |
Memory | 1664 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:37:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&n); ^ ./Main.cpp:39:33: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&fa[i]),rd[fa[i]]++; ^
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1400 / 1400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt |
All | 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt, 1_32.txt, 1_33.txt, 1_34.txt, 1_35.txt, 1_36.txt, 1_37.txt, 1_38.txt, 1_39.txt, 1_40.txt, 1_41.txt, 1_42.txt, 1_43.txt, 1_44.txt, 1_45.txt, 1_46.txt, 1_47.txt, 1_48.txt, 1_49.txt, 1_50.txt, 1_51.txt, 1_52.txt, 1_53.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
0_00.txt | AC | 1 ms | 256 KB |
0_01.txt | AC | 1 ms | 256 KB |
0_02.txt | AC | 1 ms | 256 KB |
0_03.txt | AC | 1 ms | 256 KB |
0_04.txt | AC | 1 ms | 256 KB |
1_00.txt | AC | 1 ms | 256 KB |
1_01.txt | AC | 12 ms | 1408 KB |
1_02.txt | AC | 12 ms | 1280 KB |
1_03.txt | AC | 12 ms | 1152 KB |
1_04.txt | AC | 13 ms | 1152 KB |
1_05.txt | AC | 13 ms | 1280 KB |
1_06.txt | AC | 13 ms | 1408 KB |
1_07.txt | AC | 13 ms | 1024 KB |
1_08.txt | AC | 13 ms | 1408 KB |
1_09.txt | AC | 11 ms | 1024 KB |
1_10.txt | AC | 13 ms | 1408 KB |
1_11.txt | AC | 11 ms | 1024 KB |
1_12.txt | AC | 13 ms | 1664 KB |
1_13.txt | AC | 13 ms | 1664 KB |
1_14.txt | AC | 13 ms | 1664 KB |
1_15.txt | AC | 13 ms | 1664 KB |
1_16.txt | AC | 13 ms | 1664 KB |
1_17.txt | AC | 13 ms | 1664 KB |
1_18.txt | AC | 13 ms | 1408 KB |
1_19.txt | AC | 13 ms | 1408 KB |
1_20.txt | AC | 13 ms | 1408 KB |
1_21.txt | AC | 13 ms | 1408 KB |
1_22.txt | AC | 13 ms | 1664 KB |
1_23.txt | AC | 13 ms | 1664 KB |
1_24.txt | AC | 13 ms | 1664 KB |
1_25.txt | AC | 13 ms | 1664 KB |
1_26.txt | AC | 13 ms | 1536 KB |
1_27.txt | AC | 13 ms | 1664 KB |
1_28.txt | AC | 12 ms | 1408 KB |
1_29.txt | AC | 11 ms | 1408 KB |
1_30.txt | AC | 13 ms | 1152 KB |
1_31.txt | AC | 13 ms | 1152 KB |
1_32.txt | AC | 13 ms | 1152 KB |
1_33.txt | AC | 13 ms | 1152 KB |
1_34.txt | AC | 13 ms | 1536 KB |
1_35.txt | AC | 13 ms | 1536 KB |
1_36.txt | AC | 11 ms | 1408 KB |
1_37.txt | AC | 12 ms | 1536 KB |
1_38.txt | AC | 13 ms | 1536 KB |
1_39.txt | AC | 13 ms | 1536 KB |
1_40.txt | AC | 12 ms | 1408 KB |
1_41.txt | AC | 12 ms | 1408 KB |
1_42.txt | AC | 13 ms | 1024 KB |
1_43.txt | AC | 13 ms | 1024 KB |
1_44.txt | AC | 13 ms | 1024 KB |
1_45.txt | AC | 13 ms | 1024 KB |
1_46.txt | AC | 13 ms | 1408 KB |
1_47.txt | AC | 13 ms | 1408 KB |
1_48.txt | AC | 13 ms | 1408 KB |
1_49.txt | AC | 13 ms | 1408 KB |
1_50.txt | AC | 13 ms | 1408 KB |
1_51.txt | AC | 13 ms | 1408 KB |
1_52.txt | AC | 12 ms | 1408 KB |
1_53.txt | AC | 13 ms | 1408 KB |