#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
const int n=13;
const int e=23;
#define max 32767
struct Node
{
char *num;
char *name;
};
class graph
{
public:
graph();
void floyd();
void search();
void all();
void print();
private:
Node v[n+1];
int arcs[n+1][n+1];
int a[n+1][n+1];
int path[n+1][n+1];
};
graph::graph()
{
v[1].name="north";
v[2].name="软件楼";
v[3].name="行政楼";
v[4].name="体育馆";
v[5].name="北区超市";
v[6].name="北区食堂";
v[7].name="北区宿舍";
v[8].name="library";
v[9].name="东门";
v[10].name="三栋";
v[11].name="西区食堂";
v[12].name="南区宿舍";
v[13].name="西区宿舍";
v[1].num="A";
v[2].num="B";
v[3].num="C";
v[4].num="D";
v[5].num="E";
v[6].num="F";
v[7].num="G";
v[8].num="H";
v[9].num="I";
v[10].num="J";
v[11].num="K";
v[12].num="L";
v[13].num="M";
//以二维数组存储邻接矩阵
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i==j)
arcs[i][j]=0;
else