```cpp
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
class Graph
{
private:
int **matrix;
int vexnum;
string *name;
public:
Graph(string str[], int vnum)
{
vexnum = vnum;
name = new string[vexnum];
for (int i = 0; i < vexnum; i++)
name[i] = str[i];
matrix = new int*[vnum];
for (int i = 0; i < vexnum; i++)
{
matrix[i] = new int[vexnum];
for (int j = 0; j <vexnum; j++)
cin >> matrix[i][j];
}
}
void floyd()
{
string **path = new string*[vexnum];
for (int i = 0; i<vexnum; i++)
{
path[i] = new string[vexnum];
for (int j = 0; j<vexnum; j++)
if (i == j)
path[i][j] = name[i];
else
path[i][j] = name[i] + name[j];
}
int dis[vexnum][vexnum];
for (int i = 0; i<vexnum; i++)
for (