Advertisement
GerONSo

Untitled

Apr 28th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. /*
  2. --┬-- | | --┬-- | |
  3. | |\ | | | |
  4. | | \ | | -----> | |
  5. | | \ | | | |
  6. | | \ | | | |
  7. --┴-- | \| | └---- └----
  8.  
  9. */
  10.  
  11. #define pragma
  12.  
  13. #ifdef pragma
  14. #pragma GCC optimize("Ofast")
  15. #pragma GCC optimize("no-stack-protector")
  16. #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
  17. #pragma GCC optimize("unroll-loops")
  18. #endif // pragma
  19.  
  20. #include<stdio.h>
  21. #include<bits/stdc++.h>
  22.  
  23. #define ll long long
  24. #define all(x) begin(x),end(x)
  25. #define pb push_back
  26. #define x first
  27. #define y second
  28. #define INF 9223372036854775807ll;
  29. #define PI 3.14159265359d
  30. #define INPUT "input.txt"
  31. #define OUTPUT "output.txt"
  32. #define sz size
  33. #define rsz resize
  34. //#define int long long
  35.  
  36. using namespace std;
  37.  
  38. typedef vector<int> vi;
  39. typedef pair<int,int> pii;
  40. typedef long double ld;
  41.  
  42. void seriy() {
  43. //ios::sync_with_stdio(0);
  44. cin.tie(0);
  45. cout.tie(0);
  46. freopen("input", "r", stdin);
  47. freopen("output", "w", stdout);
  48. //freopen("cycle.in", "r", stdin);
  49. //freopen("cycle.out", "w", stdout);
  50. }
  51.  
  52. const int MAXN = 1e3 + 100;
  53. const int MAX_PRIME = 1e3 + 100;
  54.  
  55. vector<vi> g(MAXN);
  56. int n, c;
  57. int minn = MAXN;
  58. vi prime(MAX_PRIME, 1);
  59. int cnt = 0;
  60. set<int> ans;
  61.  
  62. void dfs(int i, vi st, int dep) {
  63. if(dep > minn) return;
  64. st[i] = 1;
  65. for(int j = 0; j < g[i].size(); j++) {
  66. if(g[i][j] == c) {
  67. if(prime[dep + 1]) {
  68. if(minn > dep + 1) {
  69. minn = dep + 1;
  70. cnt = 0;
  71. }
  72. }
  73. if(dep + 1 == minn) {
  74. cnt++;
  75. }
  76. return;
  77. }
  78. if(!st[g[i][j]]) {
  79. dfs(g[i][j], st, dep + 1);
  80. }
  81. }
  82. }
  83.  
  84. signed main(){
  85. seriy();
  86. for(int i = 2; i < MAX_PRIME; i++) {
  87. if(prime[i]) {
  88. for(int j = i * i; j < MAX_PRIME; j += i) {
  89. prime[j] = 0;
  90. }
  91. }
  92. }
  93. cin >> n >> c;
  94. getchar();
  95. c--;
  96. vi st(n + 100);
  97. for(int i = 0; i < n; i++) {
  98. for(int j = 0; j < n; j++) {
  99. char ch = getchar();
  100. if(ch == '1') {
  101. g[i].pb(j);
  102. }
  103. }
  104. getchar();
  105. }
  106.  
  107. dfs(c, st, 0);
  108. if(minn == MAXN) return cout << -1, 0;
  109. cout << minn << " " << cnt;
  110. return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement