亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? routing1.~cpp

?? 實(shí)現(xiàn)最短路徑算法。 實(shí)現(xiàn)最短路徑算法。
?? ~CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
				else
					addFlag = true;
			}

			if(addFlag)
			{
				nextArc  = (ArcNode *)malloc(sizeof(ArcNode));
				if(nextArc == 0)
					return false;
				nextArc->arcNo          = arcNo;
				nextArc->info.tailVexNo = desNo;
				memcpy(currArc->info.arcName,arcName,MAXNAME);
				memset(nextArc->info.roadName,'\0',MAXNAME);
				nextArc->info.distance   = MAXCOST;
				nextArc->info.time       = MAXCOST;
				nextArc->nextArc         = 0;
				//
				if(!(currVex->firstArc))
					currVex->firstArc = nextArc;
				else
					currArc->nextArc = nextArc;
			}
			currVex = *graph;
			while(currVex->vexNo != desNo && currVex->nextVex)
				currVex = currVex->nextVex;
			if(currVex->vexNo != desNo)
				return false;
			for(i=0;i<MAXARCNUM;i++)//pay attention to it
			{
				if(fscanf(topoFp,"%d",&arcNo) == 1 && arcNo >0)
				{
					addFlag = false;
					currArc = currVex->firstArc;
					if(!currArc)
						addFlag = true;
					else
					{
						while(currArc->nextArc && currArc->arcNo != arcNo)
							currArc = currArc->nextArc;
						if(currArc->arcNo == arcNo)
							currArc->arcNo   = arcNo;
						else
							addFlag = true;
					}

					if(addFlag)
					{
						nextArc  = (ArcNode *)malloc(sizeof(ArcNode));
						if(nextArc == 0)
							return false;
						nextArc->arcNo          = arcNo;
						nextArc->info.tailVexNo = NOVERTEX;
						memset(nextArc->info.arcName,'\0',MAXNAME);
						memset(nextArc->info.roadName,'\0',MAXNAME);
						nextArc->info.distance   = MAXCOST;
						nextArc->info.time       = MAXCOST;
						nextArc->nextArc         = 0;
						if(!(currVex->firstArc))
						{
							currVex->firstArc = nextArc;
							currArc = nextArc;
						}
						else
							currArc->nextArc = nextArc;
					}
				}
			}
		}
		else
			return false;
	}
	return true;
}
//////////////////////////////////////////////////////////////////
//set the distance and time attribute 
/////////////////////////////////////////////////////////////////
bool Set_Attr(FILE *attrFp,VexNode **graph)
{
	bool     findFlag;//
	int      arcNo;
	char     arcName[MAXNAME],roadName[MAXNAME];
	double   tim,dis;
	VexNode  *currVex;
	ArcNode  *currArc;
	while(!feof(attrFp))
	{
		memset(arcName,'\0',MAXNAME);
		memset(roadName,'\0',MAXNAME);
		if(fscanf(attrFp,"%d %s %lf %lf %s",&arcNo,arcName,&dis,&tim,roadName) == 5)
		{
			currVex = *graph;
			findFlag = false;
			while(currVex && !findFlag)
			{
				currArc = currVex->firstArc;
				if(currArc)
				{
					while(currArc->arcNo != arcNo && currArc->nextArc)
						currArc = currArc->nextArc;
					if(currArc->arcNo == arcNo)
					{
						memcpy(currArc->info.arcName,arcName,MAXNAME);
						memcpy(currArc->info.roadName,roadName,MAXNAME);
						currArc->info.distance = dis;
						currArc->info.time     = dis/tim;
						findFlag = true;
					}
				}
				currVex = currVex->nextVex;
			}
			if(!findFlag)
				return false;
		}
		else
			return false;
	}
	return true;
}
//////////////////////////////////////////////////////////////////
//complement the graph
/////////////////////////////////////////////////////////////////
bool complement(VexNode **graph)
{
	int      arcNo,souNo,desNo;
	VexNode  *currVex,*nextVex;
	ArcNode  *currArc,*nextArc;
	currVex = *graph;
	while( currVex )
	{
		if( currVex->firstArc )
		{
			souNo  = currVex->vexNo;
			currArc = currVex->firstArc;
			while(currArc)
			{
				desNo  = currArc->info.tailVexNo;
				if(desNo == NOVERTEX)
				{
					arcNo  = currArc->arcNo;
					nextVex = *graph;
					while(nextVex)
					{
						if(nextVex != currVex && nextVex->vexNo == souNo && nextVex->firstArc)
						{
							nextArc = nextVex->firstArc;
							while(nextArc->nextArc && (nextArc->arcNo != arcNo || nextArc->info.tailVexNo == NOVERTEX))
								nextArc = nextArc->nextArc;
							if(nextArc->arcNo == arcNo && nextArc->info.tailVexNo != NOVERTEX)
								currArc->info.tailVexNo = nextArc->info.tailVexNo;
						}
						nextVex = nextVex->nextVex;
					}
				}
				currArc = currArc->nextArc;
			}
		}
		currVex = currVex->nextVex;
	}
	return true;
}
///////////////////////////////////////////////////////////////
//Dijkstra function
//vertex is numbered from 1...
///////////////////////////////////////////////////////////////
bool graph_Dij(VexNode *graph,int souNo,int desNo,double *allCost,int kind,PathNode **path)
{
	bool existFlag,minFlag;
	int vexNo,arcNo;    //vex No.
	int vexNum;    //vex Number
	int i,j,k;     
	int    *pSet;   //store the final vertex of shortest paths that found
	int    *pathV;  //store the fore vertex of the vertex in the shortest path
	int    *pathA;  //store the arc link to the vertex in the shortest path
	double *cost;   //store the cost of the shortest path
	VexNode *currVex;
	ArcNode *currArc;
	PathNode *currPath,*nextPath;

	//get vertex number
	vexNum = 0;
	currVex = graph;
	while(currVex)
	{
		vexNum++;
		currVex = currVex->nextVex;
	}
	if(souNo<1 || souNo>vexNum || desNo<1 || desNo>vexNum)
		return false;
	pSet  = (int *)malloc(sizeof(int)*vexNum );
	pathV  = (int *)malloc(sizeof(int)*vexNum );
	pathA = (int *)malloc(sizeof(int)*vexNum );
	cost  = (double *)malloc(sizeof(double)*vexNum );
	if(!pSet || !pathV || !cost || !pathA)
		return false;
	//initialize
	for(i=0;i<vexNum;i++)
	{
		pSet[i]  = NOVERTEX;
		pathV[i]  = NOVERTEX;
		pathA[i] = NOARC;
		cost[i]  = MAXCOST;
	}
	currVex = graph;
	while(currVex)
	{
		if(currVex->vexNo == souNo)
		{
			currArc = currVex->firstArc;
			while(currArc)
			{
				if(kind == DISTANCE)
					cost[currArc->info.tailVexNo-1]  = currArc->info.distance;
				else if(kind == TIME)
					cost[currArc->info.tailVexNo-1]  = currArc->info.time;
				pathV[currArc->info.tailVexNo-1] = currVex->vexNo;
				pathA[currArc->info.tailVexNo-1] = currArc->arcNo;
				currArc = currArc->nextArc;

			}
		}
		currVex = currVex->nextVex;
	}
	//get shortest path
	existFlag = false;
	pSet[0]     = souNo;
	for( i = 1; i < vexNum; i++)
	{
		//
		bool   inFlag;
		int    minNo;
		double minCost = MAXCOST;
		minFlag = false;
		//find the shortest path's final vertex
		for(j=0;j< vexNum; j++)
		{
			inFlag = false;
			for( k = 1; k < i; k++)
			{
				if(pSet[k] == j+1)
				{
					inFlag = true;
					break;
				}
				if(pSet[k] == NOVERTEX)
				{
					break;
				}
			}
			if(inFlag)
				continue;
			if(cost[j] < minCost)
			{
				minCost = cost[j];
				minNo = j+1;
				minFlag = true;
			}
		}
		if(minFlag == false)
		{
			existFlag = false;
			break;// go out the loop
		}
		pSet[i]       = minNo;
		cost[minNo-1] = minCost;
		if(minNo == desNo)
		{
			existFlag = true;
			break;//go out the loop
		}
		//change the cost linked with this vertex
		currVex = graph;
		while(currVex->nextVex && currVex->vexNo != minNo)
			currVex = currVex->nextVex;
		if(currVex->vexNo == minNo)
		{
			currArc = currVex->firstArc;
			while(currArc )
			{
				if(kind == DISTANCE)
				{
					if(currArc->info.distance + minCost < cost[currArc->info.tailVexNo-1])
					{
						cost[currArc->info.tailVexNo-1]  = currArc->info.distance + minCost;
						pathV[currArc->info.tailVexNo-1] = minNo;
						pathA[currArc->info.tailVexNo-1] = currArc->arcNo;
					}
				}
				else if(kind == TIME)
				{
					if(currArc->info.time + minCost < cost[currArc->info.tailVexNo-1])
					{
						cost[currArc->info.tailVexNo-1]  = currArc->info.time + minCost;
						pathV[currArc->info.tailVexNo-1] = minNo;
						pathA[currArc->info.tailVexNo-1] = currArc->arcNo;
					}
				}
				currArc = currArc->nextArc;
			}
		}
	}
	if(existFlag)
	{
		nextPath = (PathNode*)malloc(sizeof(PathNode));
		if(nextPath == 0)
			return false;
		nextPath->vexNo = desNo;
		nextPath->arcNo = NOARC;
		currVex = graph;
		while(currVex->nextVex && currVex->vexNo != desNo)
			currVex = currVex->nextVex;
		memcpy(nextPath->vexName,currVex->info.vexName,MAXNAME);
		memset(nextPath->arcName ,'\0',MAXNAME);
		memset(nextPath->roadName ,'\0',MAXNAME);
		nextPath->next = 0;
		for( j = i-1; j>=0; j--)
		{
			vexNo = pathV[nextPath->vexNo-1];
			arcNo = pathA[nextPath->vexNo-1];
			currPath = (PathNode*)malloc(sizeof(PathNode));
			if(currPath == 0)
				return false;
			currPath->vexNo = vexNo;
			currPath->arcNo = arcNo;
			currVex = graph;
			while(currVex->nextVex && currVex->vexNo != vexNo)
				currVex = currVex->nextVex;
			memcpy(currPath->vexName,currVex->info.vexName,MAXNAME);
			currArc = currVex->firstArc;
			while(currArc->nextArc && currArc->arcNo != arcNo)
				currArc = currArc->nextArc;
			memcpy(currPath->arcName,currArc->info.arcName,MAXNAME);
			memcpy(currPath->roadName,currArc->info.roadName,MAXNAME);
			currPath->next = nextPath;
			nextPath = currPath;

			if(currPath->vexNo == souNo)
				break;
		}
		*path = currPath;
		*allCost = cost[desNo-1];
	}
	else
	{
		*path = 0;
		*allCost = MAXCOST;
	}

	free(pSet);
	free(pathV);
	free(pathA);
	free(cost);
	return true;
}
DllExport bool create_test(VexNode **graph,char *vexFile,char *topoFile)
{
	FILE *nodeFp,*lineFp;
	if(!(nodeFp = fopen(vexFile,"r")))
		return false;
	if(!(lineFp = fopen(topoFile,"r")))
		return false;
	int      vexNo,countArc,countVex,arcNum,arcNo,headNo,tailNo;
	char name[MAXNAME];
	double   x,y,v,d;
	VexNode  *currVex,*nextVex;
	ArcNode  *currArc,*nextArc;
	countVex = 0;
	nextVex = 0;
	while(!feof(nodeFp))
	{
		if(fscanf(nodeFp,"%d %lf %lf %d",&vexNo,&x,&y,&arcNum) == 4)
		{
			nextVex  = (VexNode *)malloc(sizeof(VexNode));
			if( nextVex == 0)
				return false;
			nextVex->vexNo  = vexNo;
			nextVex->info.x = x;
			nextVex->info.y = y;
			memset(nextVex->info.vexName,'\0',MAXNAME);
			nextVex->firstArc = 0;
			countArc = 0;
			for( int j=0;j<arcNum;j++)
			{
				if(fscanf(nodeFp,"%d ",&arcNo) == 1)
				{
					nextArc  = (ArcNode *)malloc(sizeof(ArcNode));
					if(nextArc == 0)
						return false;
					if(arcNo > 0)
						nextArc->arcNo  = arcNo;
					else
						nextArc->arcNo  = -arcNo;
					memset(nextArc->info.arcName,'\0',MAXNAME);
					memset(nextArc->info.roadName,'\0',MAXNAME);
					nextArc->info.distance = 0.0;
					nextArc->info.time = 0.0;
					nextArc->info.tailVexNo = NOVERTEX;
					nextArc->nextArc = 0;
					if(countArc == 0)
					{
						nextVex->firstArc = nextArc;
						currArc = nextArc;
					}
					else
					{
						currArc->nextArc = nextArc;
						currArc = nextArc;
					}
					countArc++;
				}
			}
			nextVex->nextVex = 0;
			if(countVex == 0)
			{
				*graph = nextVex;
				currVex = nextVex;
			}
			else
			{
				currVex->nextVex = nextVex;
				currVex = nextVex;
			}
			countVex++;
		}
		else
			return false;
	}
	while(!feof(lineFp))
	{
		if(fscanf(lineFp,"%d %d %d %s %lf %lf %d",&arcNo,&headNo,&tailNo,name,&v,&d,&arcNum) == 7)
		{
			currVex = *graph;
			while(currVex && currVex->vexNo != headNo)
				currVex = currVex->nextVex;
			if(currVex->vexNo == headNo)
			{
				currArc = currVex->firstArc;
				while(currArc && currArc->arcNo != arcNo)
					currArc = currArc->nextArc;
				if(currArc && currArc->info.tailVexNo == NOVERTEX)
				{
					currArc->info.tailVexNo = tailNo;
					memcpy(currArc->info.arcName,name,MAXNAME);
					currArc->info.distance = d;
					currArc->info.time = d/v;
				}
			}
			currVex = *graph;
			while(currVex && currVex->vexNo != tailNo)
				currVex = currVex->nextVex;
			if(currVex->vexNo == tailNo)
			{
				currArc = currVex->firstArc;
				while(currArc && currArc->arcNo != arcNo)
					currArc = currArc->nextArc;
				if(currArc && currArc->info.tailVexNo == NOVERTEX)
				{
					currArc->info.tailVexNo = headNo;
					memcpy(currArc->info.arcName,name,MAXNAME);
					currArc->info.distance = d;
					currArc->info.time = d/v;
				}
			}

			for(int j=0 ;j<arcNum;j++)
			{
				fscanf(lineFp,"%lf %lf ",&x,&y);
			}
		}
		else
			return false;
	}
	return true;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久9999吃药| 国产成人8x视频一区二区 | 亚洲高清免费一级二级三级| 中文字幕精品在线不卡| 久久久久久久久久久久电影 | 久久综合九色综合97_久久久| 欧美高清hd18日本| 欧美一区二区三区思思人| 欧美卡1卡2卡| 日韩一区二区不卡| 2019国产精品| 国产精品久久国产精麻豆99网站| 国产精品一区一区| 国产成人午夜99999| 成人午夜视频在线| a亚洲天堂av| 91成人在线精品| 欧美日韩高清影院| 日韩精品资源二区在线| 久久久欧美精品sm网站| 国产精品精品国产色婷婷| 最近日韩中文字幕| 亚洲一区二区三区自拍| 日本中文字幕一区二区有限公司| 经典三级在线一区| 播五月开心婷婷综合| 在线这里只有精品| 精品少妇一区二区三区视频免付费| 精品国产一区二区精华| 国产精品伦理在线| 天堂久久一区二区三区| 精品伊人久久久久7777人| 国产成人免费视频精品含羞草妖精| 97久久人人超碰| 91精品在线一区二区| 欧美精品一区二区三区一线天视频| 国产亚洲欧洲一区高清在线观看| 国产精品视频免费看| 亚洲国产日韩一级| 国内精品伊人久久久久av影院| 成人的网站免费观看| 欧美二区在线观看| 国产精品理论在线观看| 三级久久三级久久久| 国产99一区视频免费| 欧美系列日韩一区| 久久美女高清视频| 亚洲123区在线观看| 国产成人综合视频| 欧美人妖巨大在线| 国产精品青草久久| 日日夜夜免费精品视频| 成人h动漫精品一区二区| 欧美日韩一区不卡| 亚洲国产精品成人综合| 视频一区二区欧美| 99精品视频一区二区三区| 欧美一区二区在线不卡| 亚洲另类在线制服丝袜| 国产一区视频在线看| 欧美午夜精品一区二区三区| 久久久国产精品不卡| 日韩精品国产精品| 色婷婷激情一区二区三区| 久久久久综合网| 日韩高清不卡一区二区| 91网站最新地址| 久久久www免费人成精品| 日韩av网站免费在线| 日本久久一区二区三区| 国产三级久久久| 麻豆精品在线视频| 欧美日韩国产综合视频在线观看| 中文字幕在线不卡一区| 国产一区二区免费视频| 日韩一区二区三区在线| 一区二区欧美在线观看| 成人黄页毛片网站| 久久亚洲春色中文字幕久久久| 视频一区在线视频| 91久久精品一区二区三| 亚洲视频免费看| 粉嫩高潮美女一区二区三区| 久久久另类综合| 韩国一区二区三区| 日韩精品一区二区在线观看| 首页欧美精品中文字幕| 欧美日韩久久不卡| 亚洲国产欧美在线| 欧美这里有精品| 亚洲美女区一区| 91麻豆自制传媒国产之光| 国产精品久久国产精麻豆99网站| 国产精品1区二区.| 国产亚洲va综合人人澡精品| 久久爱另类一区二区小说| 91精品国产一区二区| 首页亚洲欧美制服丝腿| 91精品久久久久久久99蜜桃| 亚洲mv大片欧洲mv大片精品| 欧美三级韩国三级日本一级| 亚洲亚洲人成综合网络| 欧美色窝79yyyycom| 亚洲小说春色综合另类电影| 欧美亚洲丝袜传媒另类| 亚洲国产视频一区二区| 欧美久久久久久久久久| 日本不卡一区二区三区高清视频| 欧美精品丝袜久久久中文字幕| 亚洲国产综合人成综合网站| 欧美精品久久一区| 久久精品久久99精品久久| 日韩欧美国产精品| 韩国女主播成人在线观看| 久久久久久日产精品| 成人激情视频网站| 亚洲精品伦理在线| 欧美伦理影视网| 免费看欧美美女黄的网站| 久久久久国产精品厨房| www..com久久爱| 亚洲一级不卡视频| 欧美一区二区在线免费播放| 韩国欧美一区二区| 亚洲欧美怡红院| 欧美美女网站色| 国内外成人在线| 国产精品久久久久四虎| 一本久道久久综合中文字幕 | 精品一区二区三区久久| 久久精品夜色噜噜亚洲a∨ | 国产三区在线成人av| 91在线一区二区三区| 五月激情六月综合| 久久伊99综合婷婷久久伊| 成人激情视频网站| 午夜亚洲国产au精品一区二区 | 男女性色大片免费观看一区二区 | 亚洲综合免费观看高清完整版| 欧美日韩视频不卡| 国产剧情一区二区三区| 亚洲欧美怡红院| 欧美一区二区人人喊爽| 成人丝袜18视频在线观看| 一片黄亚洲嫩模| 久久新电视剧免费观看| 欧美丝袜丝nylons| 国内精品伊人久久久久影院对白| 亚洲免费在线播放| 欧美电影免费观看高清完整版在线| 国产91色综合久久免费分享| 亚洲综合一区二区| 久久精品在线观看| 欧美精品在线观看播放| 粉嫩在线一区二区三区视频| 图片区小说区区亚洲影院| 国产精品久久久久国产精品日日| 欧美精品在线视频| 91在线看国产| 国产大片一区二区| 日韩综合在线视频| 中文字幕综合网| 久久亚洲一区二区三区四区| 欧美无砖专区一中文字| 成人在线一区二区三区| 久久精品国产99国产| 亚洲精品亚洲人成人网| 国产农村妇女精品| 日韩一区二区三免费高清| 色哟哟一区二区三区| 国产福利91精品一区| 亚洲成av人片一区二区三区| 国产精品伦一区二区三级视频| 日韩欧美高清在线| 欧美剧情片在线观看| 91免费看片在线观看| 春色校园综合激情亚洲| 久久狠狠亚洲综合| 偷拍自拍另类欧美| 亚洲无人区一区| 亚洲人成网站色在线观看| 国产欧美精品在线观看| 欧美电影免费观看完整版| 欧美精品久久99久久在免费线 | 国产拍欧美日韩视频二区| 日韩三级精品电影久久久| 欧美年轻男男videosbes| 91香蕉视频污在线| 99国产精品国产精品毛片| 国产91精品精华液一区二区三区| 久草中文综合在线| 九九视频精品免费| 久久精品国产999大香线蕉| 日韩精品每日更新| 五月激情六月综合| 日韩国产欧美视频| 日日夜夜精品视频免费| 五月天丁香久久| 日韩黄色片在线观看| 亚洲国产aⅴ天堂久久|