Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- --┬-- | | --┬-- | |
- | |\ | | | |
- | | \ | | -----> | |
- | | \ | | | |
- | | \ | | | |
- --┴-- | \| | └---- └----
- */
- #define pragma
- #ifdef pragma
- #pragma GCC optimize("Ofast")
- #pragma GCC optimize("no-stack-protector")
- #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
- #pragma GCC optimize("unroll-loops")
- #endif // pragma
- #include<stdio.h>
- #include<bits/stdc++.h>
- #define ll long long
- #define all(x) begin(x),end(x)
- #define pb push_back
- #define x first
- #define y second
- #define INF 9223372036854775807ll;
- #define PI 3.14159265359d
- #define INPUT "input.txt"
- #define OUTPUT "output.txt"
- #define sz size
- #define rsz resize
- //#define int long long
- using namespace std;
- typedef vector<int> vi;
- typedef pair<int,int> pii;
- typedef long double ld;
- void seriy() {
- //ios::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- freopen("input", "r", stdin);
- freopen("output", "w", stdout);
- //freopen("cycle.in", "r", stdin);
- //freopen("cycle.out", "w", stdout);
- }
- const int MAXN = 1e3 + 100;
- const int MAX_PRIME = 1e3 + 100;
- vector<vi> g(MAXN);
- int n, c;
- int minn = MAXN;
- vi prime(MAX_PRIME, 1);
- int cnt = 0;
- set<int> ans;
- void dfs(int i, vi st, int dep) {
- if(dep > minn) return;
- st[i] = 1;
- for(int j = 0; j < g[i].size(); j++) {
- if(g[i][j] == c) {
- if(prime[dep + 1]) {
- if(minn > dep + 1) {
- minn = dep + 1;
- cnt = 0;
- }
- }
- if(dep + 1 == minn) {
- cnt++;
- }
- return;
- }
- if(!st[g[i][j]]) {
- dfs(g[i][j], st, dep + 1);
- }
- }
- }
- signed main(){
- seriy();
- for(int i = 2; i < MAX_PRIME; i++) {
- if(prime[i]) {
- for(int j = i * i; j < MAX_PRIME; j += i) {
- prime[j] = 0;
- }
- }
- }
- cin >> n >> c;
- getchar();
- c--;
- vi st(n + 100);
- for(int i = 0; i < n; i++) {
- for(int j = 0; j < n; j++) {
- char ch = getchar();
- if(ch == '1') {
- g[i].pb(j);
- }
- }
- getchar();
- }
- dfs(c, st, 0);
- if(minn == MAXN) return cout << -1, 0;
- cout << minn << " " << cnt;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement