#include #include int check[200010],check2[200010]; std::vector V[200010]; void func(int k) { if(check2[k]) return; check2[k] = 1; for(int i=0;i=2) { printf("0"); return 0; } if(in[i]-out[i]>=2) { printf("0"); return 0; } if(out[i]-in[i]==1) s1++; if(in[i]-out[i]==1) s2++; } if(s1==0&&s2==0) { for(int i=1;i<=200000;i++) { if(check[i]==1) { func(i); break; } } for(int i=1;i<=200000;i++) { if(check[i]==1&&check2[i]==0) { printf("0"); return 0; } } int ans = 0; for(int i=1;i<=200000;i++) if(check[i]==1) ans++; printf("%d",ans); } else if(s1==1&&s2==1) { int p,q; for(int i=1;i<=200000;i++) { if(out[i]-in[i]==1) p = i; if(in[i]-out[i]==1) q = i; } func(p); for(int i=1;i<=200000;i++) { if(check[i]==1&&check2[i]==0) { printf("0"); return 0; } } printf("1"); } else printf("0"); }