Advertisement
a53

npath

a53
Mar 1st, 2021
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. ifstream f("npath.in");
  5. ofstream g("npath.out");
  6. const int MOD = 3000017;
  7. int n,k,a[5005],b[5005],*A,*B;
  8. vector<int> V[5005],O[5005];
  9. bitset<5005> OO,VV;
  10. int main()
  11. {
  12. A=a;B=b;
  13. f>>n>>k;
  14. for(int i=1;i<=k;i++)
  15. {
  16. int x,y,d;
  17. f>>x>>y>>d;
  18. if(d==1)
  19. O[x].push_back(y+1);
  20. else
  21. V[x+1].push_back(y);
  22. }
  23. for(auto it:O[0])
  24. OO[it]=1;
  25. A[0]=1;
  26. for(int i=1;i<=n;i++)
  27. A[i]=(1-OO[i])*A[i-1];
  28. for(int j=1;j<=n;j++)
  29. {
  30. OO.reset();
  31. VV.reset();
  32. for(auto it:O[j])OO[it]=1;
  33. for(auto it:V[j])VV[it]=1;
  34. B[0]=(1-VV[0])*A[0];
  35. for(int i=1;i<=n;i++)
  36. B[i]=((1-OO[i])*B[i-1]+(1-VV[i])*A[i])%MOD;
  37. swap(A,B);
  38. }
  39. g<<A[n];
  40. return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement