<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">/********************************************</span>
*版权所有 (C)2015,zhengzhaohan * *文件名称:data.h *文件标识:无 *内容摘要:该代码用于定义烟台大学校园各点间的权值 *其他说明:无 *当前版本:V1.0 *作者:郑兆涵 *完成日期:2015.12.23 ********************************************/ int A[57][57]= { {0,150,INF,170,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,300,200,INF,INF,INF,INF,INF,INF},//1 {150,0,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,10,20,20,INF,INF},//2 {INF,30,0,INF,50,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//3 {170,INF,INF,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//4 {INF,INF,50,10,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//5 {INF,INF,INF,INF,10,0,10,INF,INF,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//6 {INF,INF,INF,INF,INF,10,0,INF,20,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//7 {INF,INF,INF,INF,INF,INF,INF,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//8 {INF,INF,INF,INF,INF,INF,20,10,0,15,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//9 {INF,INF,INF,INF,INF,15,15,INF,15,0,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//10 {INF,INF,INF,INF,INF,INF,INF,INF,10,INF,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//11 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,30,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//12 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,20,INF,80,90,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//13 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,20,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//14 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,40,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,50,INF,INF,15},//15 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,80,INF,INF,0,100,30,INF,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//16 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,90,INF,INF,100,0,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//17 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,0,60,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//18 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,60,0,30,20,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//19 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,40,INF,40,30,0,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//20 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,20,0,10,INF,INF,INF,70,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//21 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,40,INF,10,0,10,INF,INF,60,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//22 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,30,INF,50,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//23 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,20,160,INF,INF,INF,INF,INF,INF,INF,190,INF,INF,510,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//24 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,0,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,500,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//25 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,70,60,50,160,INF,0,10,INF,INF,INF,INF,INF,20,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//26 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,30,INF,INF,INF,INF,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//27 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,10,INF,INF,INF,30,INF,25,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//28 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,20,INF,20,INF,INF,35,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//29 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//30 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//31 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,10,0,INF,INF,80,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//32 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,15,30,INF,INF,INF,INF,0,INF,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//33 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,190,INF,40,INF,INF,INF,INF,INF,INF,INF,0,20,INF,120,100,50,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//34 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,25,35,INF,INF,80,15,20,0,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//35 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,30,0,INF,INF,110,100,20,30,30,100,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//36 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,510,500,INF,INF,INF,INF,INF,INF,INF,INF,120,INF,INF,0,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//37 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,100,INF,INF,20,0,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//38 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,50,INF,110,INF,30,0,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//39 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,100,INF,INF,30,0,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//40 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,INF,20,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//41 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,10,0,INF,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//42 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,0,INF,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//43 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,100,INF,INF,INF,INF,INF,10,INF,0,20,100,INF,150,INF,INF,INF,INF,INF,INF,INF,INF,INF},//44 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,20,0,100,INF,30,20,INF,INF,15,INF,INF,INF,INF,INF},//45 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,100,100,0,20,10,INF,INF,INF,INF,INF,INF,INF,INF,INF},//46 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,0,20,INF,INF,INF,INF,INF,INF,INF,INF,INF},//47 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,150,30,10,20,0,30,50,INF,INF,INF,INF,INF,INF,INF},//48 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,30,0,20,INF,INF,INF,INF,INF,INF,INF},//49 {300,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,50,20,0,30,INF,INF,INF,INF,INF,INF},//50 {200,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,30,30,INF,INF,INF,INF},//51 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,15,INF,INF,INF,INF,INF,30,0,10,INF,INF,INF,INF},//52 {INF,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,10,0,INF,INF,INF,INF},//53 {INF,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,50,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,0,INF,INF,INF},//54 {INF,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,0,30,INF},//55 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,40},//56 {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,40,0}//57 };
/******************************************** *版权所有 (C)2015,zhengzhaohan * *文件名称:graph.h *文件标识:无 *内容摘要:该代码包含定义图数据结构的代码、宏定义、要实现算法的函数的声明 *其他说明:(1)功能:由一个反映图中顶点邻接关系的二维数组,构造出用邻接矩阵存储的图 (2)参数:Arr - 数组名,由于形式参数为二维数组时必须给出每行的元素个数,在此将参数Arr声明为一维数组名(指向int的指针) (3) n - 矩阵的阶数 (4) g - 要构造出来的邻接矩阵数据结构 *当前版本:V1.0 *作者:郑兆涵 *完成日期:2015.12.23 ********************************************/ #ifndef GRAPH_H_INCLUDED #define GRAPH_H_INCLUDED #define MAXV 100 //最大顶点个数 #define INF 32767 //INF表示∞ typedef int InfoType; //定义邻接矩阵类型 typedef struct { int no; //顶点编号 InfoType info; //顶点其他信息,在此存放带权图权值 } VertexType; //顶点类型 typedef struct //图的定义 { int edges[MAXV][MAXV]; //邻接矩阵 int n,e; //顶点数,弧数 VertexType vexs[MAXV]; //存放顶点信息 } MGraph; //图的邻接矩阵类型 void ArrayToMat(int *Arr, int n, MGraph &g); //用普通数组构造图的邻接矩阵 #endif // GRAPH_H_INCLUDED
/******************************************** *版权所有 (C)2015,zhengzhaohan * *文件名称:point.h *文件标识:无 *内容摘要:该代码用于定义烟台大学校园各点名称 *其他说明:无 *当前版本:V1.0 *作者:郑兆涵 *完成日期:2015.12.23 ********************************************/ char *vertice_name[57] = { //烟台大学地图地图 "南门","综合楼","逸夫图书馆","海洋学院","法学院","外国语学院","数学与信息科学学院","药学院","九龙广场", "实训中心","环境与材料工程学院","机电汽车工程学院","办公楼","文科馆","三元湖","1#、2#、3#教","西门","承先图书馆","八景园", "计算机中心","二餐九餐","一餐","四餐五餐","教师公寓","北门","1#、2#、3#、4#、5#学生公寓","青春广场","生命科学学院","化学学院", "光电学院","钟楼","计算机学院","三餐","小树林","土木工程学院","4#、5#、6#、7#教","东门","公安处","六餐","6#、7#、8#、9#学生公寓", "篮球(网球)场","排球场","新足球场","国防生训练场","篮球(手球)场","10#学生公寓","11#、12#、13#、14#学生公寓","七餐", "停车场","大学生活动中心","建筑馆","体育学院","体院运动场","体校","八餐","国际交流学院","育秀大楼" };
/******************************************** *版权所有 (C)2015,zhengzhaohan * *文件名称:graph.cpp *文件标识:无 *内容摘要:该代码包含实现各种算法的函数的定义,主要进行弗洛伊德算法的实现 *其他说明:(1)功能:由一个反映图中顶点邻接关系的二维数组,构造出用邻接矩阵存储的图 (2)参数:Arr - 数组名,由于形式参数为二维数组时必须给出每行的元素个数,在此将参数Arr声明为一维数组名(指向int的指针) (3) n - 矩阵的阶数 (4) g - 要构造出来的邻接矩阵数据结构 *当前版本:V1.0 *作者:郑兆涵 *完成日期:2015.12.23 ********************************************/ #include <stdio.h> #include <malloc.h> #include "graph.h" void ArrayToMat(int *Arr, int n, MGraph &g) { int i,j,count=0; //count用于统计边数,即矩阵中非0元素个数 g.n=n; for (i=0; i<g.n; i++) for (j=0; j<g.n; j++) { g.edges[i][j]=Arr[i*n+j]; //将Arr看作n×n的二维数组,Arr[i*n+j]即是Arr[i][j],计算存储位置的功夫在此应用 if(g.edges[i][j]!=0) count++; } g.e=count; }
/******************************************** *版权所有 (C)2015,zhengzhaohan * *文件名称:daohang.cpp *文件标识:无 *内容摘要:该代码主要是实现整个项目的运行功能 *其他说明:(1)该代码包含头文件<data.h>、<graph.h>、<point.h>以及<graph.cpp>源文件 (2)该代码主要实现用户登录界面、输入查询点、路线输出以及路线的文件存读 *当前版本:V1.0 *作者:郑兆涵 *完成日期:2015.12.23 ********************************************/ #include <stdio.h> #include <malloc.h> #include <cstring> #include <string.h> #include "graph.h" #include "data.h" #include "point.h" #define MaxSize 100 char string1[100], string2[100],address1[100],address2[100]; //string1[100] 定义输入的起始点,string2[100] 定义输入的终止点,address1[100] 定义起始点的转化(如"一教"转化为"1#,2#,3#教"等),address2[100] 定义终止点的转化(如"二教"转化为"1#,2#,3#教"等) char ppp[500]; //文件读存字符串 int c1=0,c2=0; // ccc()函数中的输入点 /******************************************** *功能描述:Ppath()函数用于递归查找路径上的顶点 *参数:i,j,k *返回值:无 *其他说明:无 ********************************************/ void Ppath(int path[][MAXV],int i,int j) { int k; k=path[i][j]; if (k==-1) return; //到了起点则返回 Ppath(path,i,k); //顶点i的前一个顶点k printf("%s -> ",vertice_name[k]); //改 printf("%d,",k); strcat(ppp,vertice_name[k]); strcat(ppp," -> "); Ppath(path,k,j); //顶点k的前一个顶点j } /******************************************** *功能描述:图的遍历及输出,以及文件的写入,通过将start和end所表示的起始点和终止点的两个所位于矩阵中下角标的数值,传递给该Dispath()函数 *参数:n=57,start,end *返回值:无 *其他说明:该函数涉及到文件的存储问题 ********************************************/ void Dispath(int A[][MAXV],int path[][MAXV],int n, int start, int end) { int i,j; for (i=0; i<n; i++) for (j=0; j<n; j++) { if (i==start&&j==end) if (A[i][j]==INF) { if (i!=j) printf("从%s到%s没有路径\n", vertice_name[i], vertice_name[j]); //改 printf("从%d到%d没有路径\n",i,j); } else { printf("从%s到%s路线长度约为 : %d米 \n所走路线为 : ",string1 , string2, A[i][j]); //改 printf(" 从%d到%d=>路径长度:%d 路径:",i,j,A[i][j]); strcat(ppp,"从"); strcat(ppp,string1); strcat(ppp,"到"); strcat(ppp,string2); strcat(ppp,"路线长度约为 : "); char s[10]; int t=A[i][j]; int k=0; if(t) { while(t) { s[k++]=t%10+'0'; t/=10; } } else { s[k++]='0'; } s[k]=0; strrev(s); strcat(ppp,s); strcat(ppp,"米 \n所走路线为 : "); printf("%s -> ", string1); //改 printf("%d,",i); //输出路径上的起点 strcat(ppp,string1); strcat(ppp," -> "); Ppath(path,i,j); //输出路径上的中间点 printf("%s\n", string2); //改 printf("%d\n",j); //输出路径上的终点 strcat(ppp,string2); strcat(ppp,"\n"); } } } /******************************************** *功能描述:输出最短路径 *参数:g,start,end *返回值:将所得到的值,调用Dispath函数,进行最短路径的输出 *其他说明:无 ********************************************/ void Floyd(MGraph g, int start, int end) { int A[MAXV][MAXV],path[MAXV][MAXV]; int i,j,k; for (i=0; i<g.n; i++) for (j=0; j<g.n; j++) { A[i][j]=g.edges[i][j]; path[i][j]=-1; } for (k=0; k<g.n; k++) { for (i=0; i<g.n; i++) for (j=0; j<g.n; j++) if (A[i][j]>A[i][k]+A[k][j]) { A[i][j]=A[i][k]+A[k][j]; path[i][j]=k; } } Dispath(A,path,g.n,start,end); //输出最短路径 } /******************************************** *功能描述:进行起始点和终止点的特殊判断并转化点 *参数:address1,address2,string1,string2 *返回值:将所得到的值通过address1和address2进行传递到Dispath()函数进行调用。 *其他说明:主要是通过运用strcmp的包含关系,进行点的转化 ********************************************/ void str() { if((strcmp(string1,"一教")==0)||(strcmp(string1,"二教")==0)||(strcmp(string1,"三教")==0)) { strcpy(address1,"1#、2#、3#教"); } else if((strcmp(string1,"二餐")==0)||(strcmp(string1,"九餐")==0)) { strcpy(address1,"二餐九餐"); } else if((strcmp(string1,"四餐")==0)||(strcmp(string1,"五餐")==0)) { strcpy(address1,"四餐五餐"); } else if((strcmp(string1,"四教")==0)||(strcmp(string1,"五教")==0)||(strcmp(string1,"六教")==0)||(strcmp(string1,"七教")==0)) { strcpy(address1,"4#、5#、6#、7#教"); } else if((strcmp(string1,"1#学生公寓")==0)||(strcmp(string1,"2#学生公寓")==0)||(strcmp(string1,"3#学生公寓")==0)||(strcmp(string1,"4#学生公寓")==0)||(strcmp(string1,"5#学生公寓")==0)) { strcpy(address1,"1#、2#、3#、4#、5#学生公寓"); } else if((strcmp(string1,"6#学生公寓")==0)||(strcmp(string1,"7#学生公寓")==0)||(strcmp(string1,"8#学生公寓")==0)||(strcmp(string1,"9#学生公寓")==0)) { strcpy(address1,"6#、7#、8#、9#学生公寓"); } else if((strcmp(string1,"11#学生公寓")==0)||(strcmp(string1,"12#学生公寓")==0)||(strcmp(string1,"13#学生公寓")==0)||(strcmp(string1,"14#学生公寓")==0)) { strcpy(address1,"11#、12#、13#、14#学生公寓"); } else { strcpy(address1,string1); } if((strcmp(string2,"一教")==0)||(strcmp(string2,"二教")==0)||(strcmp(string2,"三教")==0)) { strcpy(address2,"1#、2#、3#教"); } else if((strcmp(string2,"二餐")==0)||(strcmp(string2,"九餐")==0)) { strcpy(address2,"二餐九餐"); } else if((strcmp(string2,"四餐")==0)||(strcmp(string2,"五餐")==0)) { strcpy(address2,"四餐五餐"); } else if((strcmp(string2,"四教")==0)||(strcmp(string2,"五教")==0)||(strcmp(string2,"六教")==0)||(strcmp(string2,"七教")==0)) { strcpy(address2,"4#、5#、6#、7#教"); } else if((strcmp(string2,"1#学生公寓")==0)||(strcmp(string2,"2#学生公寓")==0)||(strcmp(string2,"3#学生公寓")==0)||(strcmp(string2,"4#学生公寓")==0)||(strcmp(string2,"5#学生公寓")==0)) { strcpy(address2,"1#、2#、3#、4#、5#学生公寓"); } else if((strcmp(string2,"6#学生公寓")==0)||(strcmp(string2,"7#学生公寓")==0)||(strcmp(string2,"8#学生公寓")==0)||(strcmp(string2,"9#学生公寓")==0)) { strcpy(address2,"6#、7#、8#、9#学生公寓"); } else if((strcmp(string2,"11#学生公寓")==0)||(strcmp(string2,"12#学生公寓")==0)||(strcmp(string2,"13#学生公寓")==0)||(strcmp(string2,"14#学生公寓")==0)) { strcpy(address2,"11#、12#、13#、14#学生公寓"); } else { strcpy(address2,string2); } } /******************************************** *功能描述:判断查找起始点和终止点是否输入有误 *参数:start,end,address1,address2, *返回值:0-成功,1-失败 *其他说明:start和end是矩阵中元素的位置,address1和address2是需要判断的元素的名称 ********************************************/ int find() { MGraph g; int start=0,end=0,flag=0,i=0,j=0; while(j<57) //进行判断输入点错误情况 { if(strcmp(vertice_name[j],address1)==0) { start=j; if(flag==0) { while(i<57) { if(strcmp(vertice_name[i],address2)==0) { end=i; ArrayToMat(A[0],57, g); Floyd(g, start, end); return 1; } i++; } printf("输入终止点错误!"); printf("\n"); return 0; } } else { j++; if(j == 57 ) { while(i<57) { if(strcmp(vertice_name[i],address2)==0) { printf("输入起始点错误!\n"); return 0; } i++; } printf("输入起始点和终止点均错误!"); printf("\n"); return 0; } } } } /******************************************** *功能描述:文件读存 *参数:string1,string2 *返回值:true-成功,false-失败 *其他说明:通过存入三行数据,并进行判断和调用,所定的点为起始点和终止点,当可判断到两点时,直接从文档中读取数据到dos界面上 ********************************************/ bool PathSaved() { FILE *fp=fopen("line.txt","r+"); if(fp==NULL) { return false; } char t[100]= {0}; strcat(t,string1); strcat(t," "); strcat(t,string2); strcat(t,"\n"); char t2[500]; while(fgets(t2,500,fp)) { if(strcmp(t2,t)==0) { fgets(ppp,500,fp); fgets(t2,500,fp); strcat(ppp,t2); fclose(fp); return true; } else { fgets(t2,500,fp); fgets(t2,500,fp); } } fclose(fp); return false; } /******************************************** *功能描述:文件读存 *参数:c1,c2,string1,string2 *返回值:无 *其他说明:该函数总的调用了文件读写操作 ********************************************/ void ccc() //文件读写保存 { if(c1==1) { printf("请输入起始点和终止点\n"); scanf("%s %s", string1, string2); //start=? end=? 查找其在vertice_name数组中的位置 if(!PathSaved()) { str(); int k=find(); if(k) { FILE *fp=fopen("line.txt","a"); if(fp==NULL) { fp=fopen("line.txt","w"); } fprintf(fp,"%s %s\n%s",string1,string2,ppp); fclose(fp); } } else { printf("%s",ppp); } printf("\n1.继续查找 2.退出登录\n"); scanf("%d",&c2); switch(c2) { case 1: ccc(); break; case 2: printf("谢谢使用!\n"); break; } } if(c1==2) { printf("谢谢使用!\n"); } } /******************************************** *功能描述:登录图标 *参数: *返回值:无 *其他说明: ********************************************/ void welcome() //登录图标 { printf("■■■■■■■■■■■■■■■■■■■■ \n"); printf("■ ■ \n"); printf("■ ■■■■■■■■■■■■■■■■ ■ \n"); printf("■ ■欢迎来到烟台大学校园导航系统■ ■ \n"); printf("■ ■■■■■■■■■■■■■■■■ ■ \n"); printf("■ ■ \n"); printf("■■■■■■■■■■■■■■■■■■■■ \n"); printf("\n"); for(int i=0;i<500000000;i++){} printf("请输入您的选择:\n"); printf("1.查询校园路线 2.退出登录\n"); scanf("%d",&c1); } int main() //主函数,实现功能 { welcome(); ccc(); return 0; }