I would keep data tables (in a file most likely), then read at the start and stored into classes, using IDs, something like:
Continents:
ID, Display
-------------------
NA, North America
SA, South America
EU, Europe
AS, Asia
etc
Countries:
ID, Display, Continent ID, Capital City ID (see below for City list)
------------------
CA, Canada, NA, OT
US, United States, NA, WA
MX, Mexico, NA, MC
RS, Russia, EU, MO // Ha, EU or AS (I Googled it, they didn't even know!)
etc
Country Connection:
ID, Connected To
-------------------
CA, US
CA, RS
US, CA
US, MX
MX, US
etc
Technically, since MX is connected to US, therefore you don't need the 'redundant' entry saying US is connected to MX. But this style is easy for looking up connections based on the current country you are querying, and not have to check all entries etc. Also, as a bonus feature, this way lets you define 'one way' relationships for whatever reason. US can access MX, but maybe MX can't access US (terrain issues, country capabilities such as no navy presence, etc).
For cities, the ID should be unique across the entire world, no duplicates, so a four letter number / code would be recommended:
Cities:
ID, Country ID, Display
-----------------------
TO, CA, Toronto
OT, CA, Ottawa
DT, US, Detroit
NY, US, New York
MC, MX, Mexico City
MO, RS, Moscow
etc
If you want to track which cities connect to other cities (spanning country borders too):
City Connection:
TO, OT // Toronto connects to Ottawa
TO, DT // Toronto connects to Detroit
etc
Then to keep track of troops, track each player separately, using perhaps dynamic lists, such as (and update when new countries are lost / acquired):
Player Troops:
Player ID, Country ID, Qty
------------------
01, CA, 5 // Player 01 has 5 troops in Canada
01, US, 7 // Player 01 has 7 troops in the US
02, MX, 14 // Player 02 has 14 troops in Mexico
etc
If you want to track troops in cities rather than countries, use the city id instead.
If there is only one style of troop, the above works.
But if you have multiple troop styles (navy, land, air force) then give each style an ID, and
update the above to something like:
01, NV, CA, 5 // Player 01 has 5 NAVY troops in Canada
01, AF, CA, 14 // Player 01 has 14 AIRFORCE troops in Canada
etc
You could even store each countries' borders as polygon lines in a table, for displaying, or checking if a country is clicked, or highlighting, etc.
[EDIT] Thinking over this I think I would create a 'troops' class, and a 'player' class that has an instance of a 'troop' object. The troop class would have no reference to any player. I was thinking too 'databasey' at the time!