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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? graph.cpp

?? 校園導游圖
?? CPP
字號:
#include "StdAfx.h"
#include "Graph.h"

//圖的鄰接矩陣表示,任意兩個頂點最短路徑算法

#include "assert.h"
#include "queue.h"

#include "Sqlist.h"
//#include "MinSpanTree.h"

extern CSqlist VerticesList;			//頂點表

CGraph::CGraph ( int sz ){
	//構造函數
	for ( int i=0; i<sz; i++ )					//鄰接矩陣初始化
		for ( int j=0; j<sz; j++ ) Edge[i][j] = MAXINT;
}


int CGraph::GetValue ( const int i )			//取頂點i的值, i不合理則返回空
{ return VerticesList.Get(i); }	

int CGraph::GetWeight ( const int v1, const int v2 ) 
{
	//給出以頂點v1和v2為兩端點的邊上的權值
	if ( v1 != -1 && v2 != -1 ) return Edge[v1][v2];
	else return NULL;							//帶權圖中權值為0, 表示無權值
}

int CGraph::GetFirstNeighbor ( const int v ) {
	//給出頂點位置為v的第一個鄰接頂點的位置, 如果找不到, 則函數返回-1。
	if ( v != -1 ) {
		for ( int col=0; col<VERTICES; col++ ) if ( Edge[v][col] > 0 && Edge[v][col] < MAXINT ) return col;
	}
	return -1;
}

int CGraph::GetNextNeighbor ( const int v1, const int v2 ) {
	//給出頂點v1的某鄰接頂點v2的下一個鄰接頂點
	if ( v1 != -1 && v2 != -1 )
	{
		for ( int col=v2+1; col<VERTICES; col++ )
			if ( Edge[v1][col] > 0 && Edge[v1][col] < MAXINT ) return col;
	}
	return -1;
}

void CGraph::InsertVertex ( int vertex )		//插入一個頂點vertex, 該頂點沒有入邊
{
	if(VerticesList.Length()<=MaxNumVertices)
		VerticesList.Insert ( vertex, VerticesList.Length() );		
};

void CGraph:: InsertEdge ( const int v1, const int v2, int weight )	//插入一條邊(v1, v2), 該邊上的權值為weight
{
	Edge[v1][v2]=weight;
};

/*int *CGraph::Prim(int& count){
	MinSpanTree T;
	int NumVertices = VERTICES;
    int * lowcost = new int [NumVertices];
    int * nearvex = new int [NumVertices];
    int *iPointIndex = new int [VERTICES+1];
    count = 0;
       for(int i=1; i<NumVertices;i++){
             lowcost[i]=Edge[0][i];
             nearvex[i]=0;
	   }
          nearvex[0]=-1;
		  iPointIndex[count++]=0;
          MSTEdgeNode e;
   for( i=1; i<NumVertices;i++){
    int min=MAXINT;int v=0;
    for(int j=0; j<NumVertices;j++)
         if(nearvex[j]!=-1&&lowcost[j]<min){v=j;min=lowcost[j];}
		 iPointIndex[count++]=v;
		 if(v){
			 e.tail=nearvex[v];
	         e.head=v;
	         e.cost=lowcost[v];
	         T.Inser(e);
	         nearvex[v]=-1;
         for(int j=1; j<NumVertices;j++)
	    if(nearvex[j]!=-1&&Edge[v][j]<lowcost[j])
		{lowcost[j]=Edge[v][j];nearvex[j]=v;}
		 }
   }
	return iPointIndex;
}
*/

 
int *CGraph::DFS(int& count) //對連通圖進行深度優先搜索的主過程
{				
	int *iPointIndex = new int [VERTICES+1];
	int *visited	 = new int [VERTICES];			//創建輔助數組
	count			 = 0;
	for (int i=0; i<VERTICES; i++)
	{
		visited [i] = 0;							//輔助數組初始化
	}

	for (i=0; i<VERTICES; i++) 
	{
		if (!visited[i])  
			DFS (i ,visited, count, iPointIndex);	//從頂點0開始深度優先搜索
	}

	iPointIndex[count++] =18;
	count=19;

	return iPointIndex;
}

void CGraph::DFS( const int v, int visited [ ], int& count, int *iPointIndex) 
{
	//從頂點位置v出發, 以深度優先的次序訪問所有可讀入的尚未訪問過的頂點。算法中用到一個輔助數組
	// visited, 對已訪問過的頂點作訪問標記。
	
	//訪問該頂點的數據
	iPointIndex[count++] = GetValue(v);
	visited[v] = 1;									//訪問標志改為已訪問過
	int w = GetFirstNeighbor(v);					//找頂點v的第一個鄰接頂點w
	while ( w != -1 )								//有鄰接頂點
	{				
		if ( !visited[w] )
		{	
			DFS(w, visited, count, iPointIndex);	//若未訪問過, 從w遞歸訪問
		}
		w = GetNextNeighbor( v,w );				//找頂點v的下一個鄰接頂點
	}
}

 
void CGraph:: AllLengths ( )
{
	//Edge[n][n]是一個具有n個頂點的圖的鄰接矩陣。a[i][j]是頂點i和j之間的最短路徑長度。path[i][j]是相應路
	//徑上頂點j的前一頂點的頂點號, 在求最短路徑時圖的類定義中要修改path為path[NumVertices][NumVertices]。
	for ( int i=0; i<VERTICES; i++ )
	{
		for ( int j=0; j<VERTICES; j++ ) 	//矩陣a與path初始化
		{						
			if (i!=j) 
				dist[i][j] = Edge[i][j];
			else 
				dist[i][j]=0;

			if ( i != j && dist[i][j] < MAXINT ) 
				path[i][j] = i;							// 有路徑
			else 
				path[i][j] =-1;							// i到j無路徑
		}
	}

	for ( int k=0; k<VERTICES; k++ )	//產生a(k)及相應的path(k)
	{
		for ( i=0; i<VERTICES; i++ )
		{
			if (path[i][k] >= 0)
			{
				for ( int j=0; j<VERTICES; j++ )
				{
					if( path[k][j]>=0 && dist[i][k] + dist[k][j] < dist[i][j] )
					{
						dist[i][j] = dist[i][k] + dist[k][j];
						path[i][j] = path[k][j];		//縮短路徑長度, 繞過k到j
					}
				}
			}
		}
	}
}

int *CGraph::BestPath(int start,int end, int &verNum, int& distance)
{
	int* iPointIndex = NULL; 
	CWordArray wArray; 
	wArray.RemoveAll();
	verNum = 0;
	for (int index= path[start][end]; index!=start;)
	{
		if (start != end)
		{
			if(Edge[index][path[start][index]]>0&&Edge[index][path[start][index]]<MAXINT)
			{
				wArray.Add(index);
			    index= path[start][index];
			}
			else
			{
				wArray.Add(path[start][index]);
				wArray.Add(index);
			    index= path[start][index];
			}
		}
		else
			break;
	
	}
	int count = wArray.GetSize();
	iPointIndex = new int[count+3];
	iPointIndex[verNum++] = start;

	for (int i= count; i>0; i--)
	{
		iPointIndex[verNum++] = wArray.GetAt(i-1);
	}

	iPointIndex[verNum++] = end;

	distance = dist[start][end];

	return iPointIndex;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
九一九一国产精品| 欧美日韩精品电影| 日本韩国欧美国产| 欧美疯狂做受xxxx富婆| 在线观看亚洲专区| 欧美变态凌虐bdsm| 亚洲欧洲色图综合| 午夜a成v人精品| 国产成人av一区二区| 日本韩国精品在线| 欧美男人的天堂一二区| 中文字幕欧美激情| 日韩精品三区四区| 不卡一二三区首页| 日韩一区国产二区欧美三区| 亚洲欧洲成人精品av97| 日韩av网站免费在线| 九九精品一区二区| 色婷婷激情久久| 久久精品夜色噜噜亚洲aⅴ| 午夜视频在线观看一区| 99视频在线精品| 精品日韩在线观看| 亚洲午夜免费福利视频| 成人精品视频一区二区三区| 91精品国产日韩91久久久久久| 成人免费在线视频| 久久99国产精品久久| 欧美日韩中文一区| 亚洲精品中文在线影院| 日本女优在线视频一区二区| 色噜噜久久综合| 中文字幕不卡在线播放| 加勒比av一区二区| 在线播放日韩导航| 亚洲最大成人网4388xx| 国产成人免费视| 亚洲精品在线三区| 日本中文在线一区| 欧美麻豆精品久久久久久| 亚洲色图在线播放| 91亚洲国产成人精品一区二三| 欧美精品一区二区三区在线播放| 麻豆国产欧美一区二区三区| 欧美丰满美乳xxx高潮www| 亚洲成人动漫在线免费观看| 在线免费观看视频一区| 国产精品区一区二区三区| 国产美女精品在线| 国产亚洲欧洲一区高清在线观看| 精品午夜久久福利影院 | 看电影不卡的网站| 欧美网站一区二区| 亚洲一区二区黄色| 欧美日韩精品一区二区天天拍小说 | 亚洲视频精选在线| 成人久久18免费网站麻豆| 欧美国产欧美综合| 成人免费毛片嘿嘿连载视频| 中文成人av在线| 成人免费视频国产在线观看| 国产精品色在线| 成人性生交大片免费看中文网站| 国产日韩一级二级三级| 成人激情小说乱人伦| 国产精品久久看| 色婷婷av久久久久久久| 天天综合天天综合色| 日韩一二三四区| 国产一区二区视频在线播放| 日韩精品综合一本久道在线视频| 韩国三级在线一区| 中文字幕欧美日韩一区| 91免费版在线看| 日本成人在线网站| 欧美日本精品一区二区三区| 久久99国产精品免费网站| 欧美激情在线观看视频免费| 色噜噜夜夜夜综合网| 日韩国产欧美视频| 久久精品亚洲精品国产欧美kt∨| caoporn国产精品| 午夜av一区二区| 国产欧美视频一区二区三区| 成人av午夜电影| 日韩电影一区二区三区四区| 国产午夜亚洲精品不卡| 91国产精品成人| 久久精品99久久久| 一区二区三区四区在线免费观看| 6080yy午夜一二三区久久| 国产91对白在线观看九色| 亚洲国产精品影院| 精品三级av在线| 欧美在线影院一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 另类成人小视频在线| 亚洲激情男女视频| 中文字幕电影一区| 26uuu亚洲综合色欧美| 777午夜精品免费视频| 色婷婷久久一区二区三区麻豆| 国产精品羞羞答答xxdd| 久久精品国产**网站演员| 天堂精品中文字幕在线| 亚洲香肠在线观看| 一区二区三区中文字幕电影| 日本一区二区成人| 久久久国产一区二区三区四区小说 | 欧洲一区在线电影| 91在线国产福利| 福利电影一区二区| 国产成人啪免费观看软件| 国产一区二区中文字幕| 美日韩一区二区| 麻豆91在线播放免费| 久久国产福利国产秒拍| 九九热在线视频观看这里只有精品| 免费人成精品欧美精品| 免费一级片91| 国内精品嫩模私拍在线| 国产精品一区二区三区乱码| 国产在线视频一区二区| 国产精品亚洲第一区在线暖暖韩国| 国产精品一区免费在线观看| 国产成人av福利| 成人av一区二区三区| 色综合天天综合网天天狠天天| www..com久久爱| 欧洲日韩一区二区三区| 欧美日韩久久不卡| 欧美va亚洲va| 国产精品私人影院| 依依成人精品视频| 午夜伦欧美伦电影理论片| 日本91福利区| 国产美女视频91| 99国产一区二区三精品乱码| 91国偷自产一区二区开放时间| 欧美日韩成人在线一区| 日韩久久久久久| 国产精品久久久99| 亚洲成人一区在线| 国产一区二区美女诱惑| 色婷婷激情综合| 日韩天堂在线观看| 国产精品成人免费| 日本最新不卡在线| 成人av手机在线观看| 欧美绝品在线观看成人午夜影视| 久久综合九色综合97婷婷| 亚洲色图欧洲色图婷婷| 日本成人在线不卡视频| 国产91在线观看| 欧美日韩高清影院| 国产亚洲一区二区三区在线观看| 亚洲精选在线视频| 国产麻豆成人传媒免费观看| 在线视频亚洲一区| 久久久久久久综合色一本| 一区二区三区四区高清精品免费观看 | 国产一区二区三区四区五区入口| 一本色道综合亚洲| 久久天堂av综合合色蜜桃网 | 亚洲国产精品精华液ab| 午夜精彩视频在线观看不卡| 福利电影一区二区| 日韩你懂的在线播放| 亚洲激情自拍视频| 国产精品影视网| 欧美一区二区黄色| 亚洲午夜久久久久久久久久久| 国产ts人妖一区二区| 日韩亚洲欧美高清| 亚洲一区二区三区爽爽爽爽爽| 国产成人日日夜夜| 亚洲精品一区二区三区四区高清| 亚洲国产欧美在线| 94-欧美-setu| 国产精品情趣视频| 国产在线国偷精品免费看| 在线电影一区二区三区| 一区二区激情小说| 91一区二区在线| 国产精品网友自拍| 国产成人综合视频| www精品美女久久久tv| 日韩vs国产vs欧美| 欧美日韩国产一级| 亚洲一区二区精品3399| 日本高清不卡在线观看| 国产精品你懂的在线| 国产激情一区二区三区四区| 精品国产3级a| 另类专区欧美蜜桃臀第一页| 91.com视频| 日韩成人一级片| 欧美一区日韩一区| 蜜桃一区二区三区四区| 欧美成人女星排名|