# Path Through Graph TCS CodeVita Question:

## Problem:-

You are given two natural numbers. Imagine these natural numbers as nodes on a graph. On this graph, a number is connected to its largest factor other than itself. You have to find the shortest path between them and print the number of edges on that path.

If the two numbers do not have any common factor, then construct a path through 1. For better understanding refer to the examples below:

### Example

#### Example 1:

Input numbers: 2 4

The numbers are directly connected as follows on the graph. 2 is the largest factor of 4, other than itself.

We can also see that there is only on edge between them.

4 <--> 2

Hence the number of edges in shortest path is 1.

#### Example 2:

Input numbers: 18 19

The graph for number 18 and 19 will look like this. Here we have 4 edges in the path.

18 <--> 9 <--> 3 <--> 1 <--> 19

#### Example 3:

Input numbers: 9 9

The number of edges in shortest path is zero since the numbers correspond to the same node.

#### Constraints

0 < M, N <= 10 ^ 9

### Input

Single line containing two space separated integers M, N

### Output

Number of edges in the shortest path.

### Time Limit

1

### Examples

Example 1

Input

15689 28

Output

5

### Explanation :

The graph for number 15689 and 28 will look like this.

Since we know that largest factor of 15689 other than itself is 541.

Since 541 is a prime number, it’s largest factor other than itself is 1.

For number 28, it’s largest factor other than itself is 14.

Largest factor of 14, other than itself is 7.

Since 7 is a prime number, it’s largest factor other than itself is 1.

So, the graph will look like this:

15689 <--> 541 <--> 1 <--> 7 <--> 14 <--> 28

Since there are 5 edges in this graph, output will be 5.

### Example 2

Input

16 4

Output

2

#### Explanation :

The graph for number 16 and 4 will look like this.

Since we know that largest factor of 16 other than itself is 8.

Largest factor of 8 other than itself is 4. That’s the other input number, so we will stop here.

So, the graph will look like this:

16<-->8<-->4

Since there are 2 edges in this graph, output will be 2."

## Solution of Path Through Graph TCS CodeVita season 9 Questions:-

#include <bits/stdc++.h>

using namespace std;

#define int long long

#define endl '\n'

int get(int x)

{

for(int i=2;i*i<=x;i++)

{

if(x%i==0)return x/i;

}

return 1;

}

void sol()

{

int x,y;

cin>>x>>y;

if(x<y)swap(x,y);

if(x==y){cout<<0;return;}

map<int,int> m;

int c=0;

while(x!=1)

{

c++;

x=get(x);

m[x]=c;

}

c=0;

while(!m.count(y))

{

c++;

y=get(y);

}

cout<<c+m[y];

}

int32_t main()

{

ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);

sol();

return 0;

**Final Word:-**

**In this article, We have shown you the solution of "Elections TCS CodeVita Problem".We hope you like it**

If you have done this by a different approach or you have implemented something in any language please comment down below and share your code with us.we will publish that with your name.

*If This post helps you a little bit then please share this post with your friends. **For more Computer and programming Related Tips and tricks, please*

*Subscribe us on*

**Youtube**

*Follow us on*

*Follow us on***Telegram**

*Don't forget to share how you like this Content in the comment below.*

*If you have any doubt or suggestion then please write in the comment section below, we will love to hear from you.*

## No comments: