求问c++非法内存引用问题

全部代码如下,数据录入较多,实际代码内容较少,感谢大家!!
#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
#define MAX 100000 //表示极大值∞
#define max 95
int main()
{
bool S[max]; //记录从源点V0到终点Vi是否已经确定为最短路径,确定了记true,否则记false
int Path[max]; //记录从源点V0到终点Vi的当前最短路径上终点Vi的直接前驱顶点序号,若V0到Vi之间有边前驱为V0否则为-1
int D[max]; //记录源点到终点之间最短路径的长度,存在记V0到Vi的边的权值,否则记为MAX
string vexs[max]; //顶点表
int arcs[max][max]; //邻接矩阵
int vexnum; //图当前点数
//初始化操作
vexs[max] = ("pingguoyuan","gucheng","bajiao amusement park","babaoshan","yuquanlu","wukesong", "wanshoulu",
"gongzhufen","military museum", "muxid","nanlishilu","fuxingmen","xidan","tiananmen west","tiananmen east",
"wangfujing","dongdan","jianguomen", "yong'anli","guomao","dawanglu","sihui","sihui east","xizhimen","chegongzhuang",
"xizhimen", "jishuitan", "guloudajie", "andingmen", "yonghegong lama temple", "dongzhimen",
"dongsishitiao", "chaoyangmen", "beijing railway station", "chongwenmen", "qianmen", "hepingmen", "xuanwumen",
"changchunjie", "xidiaoyutai", "cishousi", "chedaogou", "changchunqiao", "huoqiying", "bagou", "suzhoujie",
"haidianhuangzhuang", "zhichunli", "zhichunlu", "xitucheng", "mudanyuan", "jiandemen", "beitucheng", "anzhenmen",
"huixinxijie nankou", "shaoyaoju", "taiyanggong", "sanyuanqiao", "liangmaqiao", "agricultural exhibition center",
"tuanjiehu", "hujialou", "jintaixizhao", "shuangjing", "jinsong", "panjiayuan", "shilihe", "fenzhongsi", "chengshousi",
"songjiazhuang", "shiliuzhuang", "dahongmen", "jiaomen east", "jiaomen west", "caoqiao", "jijiamiao", "shoujingmao",
"fengtai railway station", "niwa", "xiju", "liuliqao", "lianhuaqiao", "dazhongsi","wudaokou", "shangdi", "xi'erqi",
"longze", "huilongguan", "huoying", "lishuiqiao", "beiyuan", "wangjing west", "guangximen", "liufang");
for (int countt = 1; countt < 95; countt++)
{
for (int counttt = 1; counttt < 95; counttt++)
arcs[countt][counttt] = MAX;
};
//正向
arcs[0][1] = 2606;
arcs[1][2] = 1921;
arcs[2][3] = 1953;
arcs[3][4] = 1479;
arcs[4][5] = 1810;
arcs[5][6] = 1778;
arcs[6][7] = 1313;
arcs[7][8] = 1172;
arcs[8][9] = 1166;
arcs[9][10] = 1291;
arcs[10][11] = 424;
arcs[11][12] = 1590;
arcs[12][13] = 1217;
arcs[13][14] = 925;
arcs[14][15] = 852;
arcs[15][16] = 774;
arcs[16][17] = 1230;
arcs[17][18] = 1377;
arcs[18][19] = 790;
arcs[19][20] = 1385;
arcs[20][21] = 1673;
arcs[21][22] = 1714;
arcs[26][25] = 909;
arcs[24][23] = 960;
arcs[23][11] = 1832;
arcs[11][38] = 1234;
arcs[38][37] = 929;
arcs[37][36] = 851;
arcs[36][35] = 1171;
arcs[35][34] = 1634;
arcs[34][33] = 1023;
arcs[33][17] = 945;
arcs[17][32] = 1763;
arcs[32][31] = 1027;
arcs[31][30] = 824;
arcs[30][29] = 2228;
arcs[29][28] = 794;
arcs[28][27] = 1237;
arcs[27][26] = 1766;
arcs[26][25] = 1899;
arcs[44][45] = 1110;
arcs[45][46] = 950;
arcs[46][47] = 975;
arcs[47][48] = 1058;
arcs[48][49] = 1101;
arcs[49][50] = 1330;
arcs[50][51] = 973;
arcs[51][52] = 1100;
arcs[52][53] = 1020;
arcs[53][54] = 982;
arcs[54][55] = 1712;
arcs[55][56] = 1003;
arcs[56][57] = 1759;
arcs[57][58] = 1506;
arcs[58][59] = 914;
arcs[59][60] = 853;
arcs[60][61] = 1149;
arcs[61][62] = 734;
arcs[62][19] = 835;
arcs[19][63] = 1759;
arcs[63][64] = 1006;
arcs[64][65] = 1021;
arcs[65][66] = 1097;
arcs[66][67] = 1804;
arcs[67][68] = 1058;
arcs[68][69] = 1677;
arcs[69][70] = 1269;
arcs[70][71] = 1244;
arcs[71][72] = 1130;
arcs[72][73] = 1254;
arcs[73][74] = 1688;
arcs[74][75] = 1547;
arcs[75][76] = 1143;
arcs[76][77] = 1717;
arcs[77][78] = 954;
arcs[78][79] = 749;
arcs[79][80] = 1584;
arcs[80][81] = 2392;
arcs[81][7] = 1016;
arcs[7][39] = 2386;
arcs[39][40] = 1214;
arcs[40][41] = 1590;
arcs[41][42] = 1205;
arcs[42][43] = 961;
arcs[43][44] = 1495;
arcs[25][82] = 2839;
arcs[82][48] = 1206;
arcs[48][83] = 1829;
arcs[83][84] = 4866;
arcs[84][85] = 2538;
arcs[85][86] = 3623;
arcs[86][87] = 1423;
arcs[87][88] = 2110;
arcs[88][89] = 4785;
arcs[89][90] = 2272;
arcs[90][91] = 6722;
arcs[91][55] = 2152;
arcs[55][92] = 1110;
arcs[92][93] = 1135;
arcs[93][30] = 1769;
//反向
arcs[1][0] = 2606;
arcs[2][1] = 1921;
arcs[3][2] = 1953;
arcs[4][3] = 1479;
arcs[5][4] = 1810;
arcs[6][5] = 1778;
arcs[7][6] = 1313;
arcs[8][7] = 1172;
arcs[9][8] = 1166;
arcs[10][9] = 1291;
arcs[11][10] = 424;
arcs[12][11] = 1590;
arcs[13][12] = 1217;
arcs[14][13] = 925;
arcs[15][14] = 852;
arcs[16][15] = 774;
arcs[17][16] = 1230;
arcs[18][17] = 1377;
arcs[19][18] = 790;
arcs[20][19] = 1385;
arcs[21][20] = 1673;
arcs[22][21] = 1714;
arcs[25][26] = 909;
arcs[23][24] = 960;
arcs[11][23] = 1832;
arcs[38][11] = 1234;
arcs[37][38] = 929;
arcs[36][37] = 851;
arcs[35][36] = 1171;
arcs[34][35] = 1634;
arcs[33][34] = 1023;
arcs[17][33] = 945;
arcs[32][17] = 1763;
arcs[31][32] = 1027;
arcs[30][31] = 824;
arcs[29][30] = 2228;
arcs[28][29] = 794;
arcs[27][28] = 1237;
arcs[26][27] = 1766;
arcs[25][26] = 1899;
arcs[45][44] = 1110;
arcs[46][45] = 950;
arcs[47][46] = 975;
arcs[48][47] = 1058;
arcs[49][48] = 1101;
arcs[50][49] = 1330;
arcs[51][50] = 973;
arcs[52][51] = 1100;
arcs[53][52] = 1020;
arcs[54][53] = 982;
arcs[55][54] = 1712;
arcs[56][55] = 1003;
arcs[57][56] = 1759;
arcs[58][57] = 1506;
arcs[59][58] = 914;
arcs[60][59] = 853;
arcs[61][60] = 1149;
arcs[62][61] = 734;
arcs[19][62] = 835;
arcs[63][19] = 1759;
arcs[64][63] = 1006;
arcs[65][64] = 1021;
arcs[66][65] = 1097;
arcs[67][66] = 1804;
arcs[68][67] = 1058;
arcs[69][68] = 1677;
arcs[70][69] = 1269;
arcs[71][70] = 1244;
arcs[72][71] = 1130;
arcs[73][72] = 1254;
arcs[74][73] = 1688;
arcs[75][74] = 1547;
arcs[76][75] = 1143;
arcs[77][76] = 1717;
arcs[78][77] = 954;
arcs[79][78] = 749;
arcs[80][79] = 1584;
arcs[81][80] = 2392;
arcs[7][81] = 1016;
arcs[39][7] = 2386;
arcs[40][39] = 1214;
arcs[41][40] = 1590;
arcs[42][41] = 1205;
arcs[43][42] = 961;
arcs[44][43] = 1495;
arcs[82][25] = 2839;
arcs[48][82] = 1206;
arcs[83][48] = 1829;
arcs[84][83] = 4866;
arcs[85][84] = 2538;
arcs[86][85] = 3623;
arcs[87][86] = 1423;
arcs[88][87] = 2110;
arcs[89][88] = 4785;
arcs[90][89] = 2272;
arcs[91][90] = 6722;
arcs[55][91] = 2152;
arcs[92][55] = 1110;
arcs[93][92] = 1135;
arcs[30][93] = 1769;
vexnum=94;
int p = 0, q = 0, feiyong = 0;
int count = 0;
string s, e;
getline(cin, s, ';');
getline(cin, e);
for (; count < 94; count++)
{
if (s == vexs[count])
{
p = count;
}
break;
}
for (; count < 94; count++)
{
if (e == vexs[count])
{
q = count;
}
break;
}
//使用迪杰斯特拉算法求有向网G中的V0 定点到其余顶点的最短路径
int n = vexnum;//顶点数
int v0 = p;
for (int v = 0; v < n; v++)//n个顶点依次初始化
{
S[v] = false;//S初始化为空集
D[v] = arcs[v0][v];//将v0到各个终点的最短路径长度初始化为边上的权值
if (D[v] < MAX)
Path[v] = v0;//如果v0和v之间有边,则将v的前驱初始化为v0
else
Path[v] = -1;//如果v0和v之间无边,则将v的前驱初始化为-1
}
S[v0] = true; //将v0加入s
D[v0] = 0;//源点到源点的权值为0
//---------初始化结束,开始主循环,每次求得v0到某个顶点的最短路径,将v加到S数组
for (int i = 1; i < n; i++)//依次对其余n-1个顶点进行计算
{
int min = MAX;
int v = v0;
for (int w = 0; w < n; w++)
{
if (!S[w] && D[w] < min)
{//选择一条当前最短路径,终点为v
v = w;
min = D[w];
}
S[v] = true;//将v加到s集合中
for (int w = 0; w < n; w++)
{//更新从v0出发到集合V-S上所有顶点的最短路径长度
if (!S[w] && (D[v] + arcs[v][w] < D[w]))
{
D[w] = D[v] + arcs[v][w];//更新D[w]
Path[w] = v;//更改w的前驱为v
}
}
}
}
cout << "最短路径值为:" << D[q] << "米" << endl;
if (D[q] <= 6000)
{
feiyong = 3;
}
if (D[q] <= 12000 && D[q]>6000)
{
feiyong = 4;
}
if (D[q] <= 22000 && D[q]>12000)
{
feiyong = 5;
}
if (D[q] <= 32000 && D[q]>22000)
{
feiyong = 6;
}
if (D[q] <= 52000 && D[q]>32000)
{
feiyong = 7;
}
cout << feiyong << endl;
return 0;
}
如果还有其他问题,也希望大家可以指出!谢谢!
相关推荐
C++ .h和.cpp文件总结
总结了.h文件能做什么,.cpp文件能做什么,总结了.h文件的本质,方便新手在遇到文件包含、类型声明、变量定义时能理清.h与.cpp关系,纯属个人总结文档。
浅谈C++左值引用和右值引用
下面小编就为大家带来一篇浅谈C++左值引用和右值引用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
c++ const引用与非const引用介绍
const引用是指向const对象的引用。 代码如下: const int i = 10; const int &ref = i; 可以读取ref,但不能修改。这样做是有意义的,因为i本身就不可修改,当然也不能通过ref来修改了。所以也就有将const变量赋值给非const引用是非法的。 代码如下: int &ref1 = i; // error: nonconst reference to a const object 非const引用是指向非const类型变量的引用。 const引用可以初始化为不同类型的对象或者右值(如字面值常量),但非const引用不可以。 代码如下: //
cpp代码-C++基础
cpp代码-C++基础
C++11中的左值引用和右值引用
1.首先区分左值和右值 左值是表达式结束后依然存在的持久对象 右值是表达式结束时不再存在的临时对象 便捷方法:对表达式取地址,如果能,则为左值,否则为右值 举例: int a = 10 int b = 20 int *pFlag = &a vector vctTemp vctTemp.push_back(1) string str1 = "hello" string str2 = "world" const int &m = 1 请问:a,b,a+b,a++,++a,pFlag,vctTemp[0],100


