1、 /景点void floyd(graph &t,const int n);void picture();void creatp(graph &t);void bfs(graph t);void graph:picture()cout*校园导游图*endl;以下是学校的景点* 1.校园门口 2.图书管 * 3.饭堂 4.教学楼以下是学校的路径图31 *-* 2 | /| / | / | 4 | 9/ | 5 | /3 *-* 42下面是景点与景点之间的距离和介绍:;1.校园门口 -2.图书管 距离为:1.校园门口 -3.饭堂42.图书管 -4.教学楼 -3.饭堂93.饭堂5/校园图creatp(
2、graph &t)int i,j;for(i=1;i=n;i+)for(j=1;jj+)if(i=j)t.arcsij=0; /景点一样则距离为0else t.arcsij=max; /i不等于j时t.arcs12=3; t.arcs21=3; t.arcs24=5; t.arcs42=5; t.arcs31=4; t.arcs13=4; t.arcs32=9; t.arcs23=9; t.arcs34=2; t.arcs43=2/把景点跟距离用一个二围数组存储下来floyd(graph &t,const int n)for(int i=1;for(int j=1;t.aij=t.arcsij
3、; /把距离付值给a.ijif(i!=j)&(aijmax)t.pathij=i;else t.pathij=0;for(int k=1;kk+)if(t.aik+t.akji;while(i=4)/coutt.arcs;/输出访问点/for(i;if(i=1)cout这里就是你要去的地方拉!endlelseif(i!=j)距离为t.aijint next=t.pathij;j;while(next!=i)-next;next=t.pathinext;等我推荐一条最佳路径供你返回吧(y/n):ch;if(ch=y) if(i=2) cout2-4-3-1 if(i=3) cout3-2-1或者3-4-2-1 if(i=4) cout如果你想去四景点我们会带你游览学校全景:1-2-4-3-1 cout if(ch=) cout if(ch!=) *退出程序* 欢迎下次再来 break;break;void main()graph t;t.picture();t.creatp(t);t.floyd(t,n);t.bfs(t);