In this

**HackerEarth Monk in the real estate problem solution,**The Monk wants to buy some cities. To buy two cities, he needs to buy the road connecting those two cities. Now, you are given a list of roads, bought by the Monk. You need to tell how many cities did the Monk buy.## HackerEarth Monk in the real estate problem solution.

`#include <iostream>`

#include <cassert>

using namespace std;

const int MAX = 1e4 + 5;

bool visited[MAX];

int main()

{

int edges, x, y, testcases, nodes;

cin >> testcases;

assert(1 <= testcases and testcases <= 100);

while(testcases--)

{

cin >> edges;

assert(1 <= edges and edges <= 1000);

for(int i = 0;i < edges;++i)

{

cin >> x >> y;

assert(1 <= x and x <= 10000);

assert(1 <= y and y <= 10000);

visited[x] = true;

visited[y] = true;

}

nodes = 0;

for(int i = 0;i < MAX;++i)

if(visited[i])

{

visited[i] = false;

nodes++;

}

cout << nodes << endl;

}

return 0;

}

### Second solution

`tc = int(raw_input())`

assert(tc>0 and tc<101)

while tc>0:

tc = tc - 1

n = int(raw_input())

assert(n>0 and n<1001)

visited = [False]*10013

for i in xrange(n):

a, b = map(int, raw_input().split())

assert(a>0 and a<10001)

assert(b>0 and b<10001)

visited[a] = True

visited[b] = True

nodes = 0

for i in xrange(10013):

if visited[i]:

visited[i] = False

nodes += 1

print nodes