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

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

?? 圖-鄰接矩陣-最短路徑.cpp

?? 圖的最短路徑的應(yīng)用
?? CPP
字號(hào):
#include<iostream.h>

// 定義 狀態(tài)代碼 及 數(shù)據(jù)類型
#define NULL 0
#define OK 1
#define ERROR 0
#define INFINITY 255
#define MAX_VERTEX_NUM 20
// -----------------------  隊(duì)列結(jié)構(gòu)  -------------------------
// 節(jié)點(diǎn)存儲(chǔ)結(jié)構(gòu)
typedef struct QNode{
	int data;
	struct QNode *next;
}QNode,*QueuePtr;
// 隊(duì)列
typedef struct{
	QueuePtr front;
	QueuePtr rear;
}LinkQueue;
// 初始化隊(duì)列
int InitQueue(LinkQueue &Q){
	Q.front=Q.rear=new QNode;
	if(!Q.front) 
		return ERROR;
	Q.front->next=NULL;
	return OK;
}
// 入隊(duì)
int EnQueue(LinkQueue &Q,int e){
	QueuePtr p=NULL;
	p=new QNode;
	if(!p)
		return ERROR;
	p->data=e;
	p->next=NULL;
	Q.rear->next=p;
	Q.rear=p;
	return OK;
}
// 出隊(duì)
int DeQueue(LinkQueue &Q,int &e){
	QueuePtr p=NULL;
	if(Q.front==Q.rear)
		return ERROR;
	p=Q.front->next;
	e=p->data;
	Q.front->next=p->next;
	if(Q.rear==p)			// 注意當(dāng)出隊(duì)后為空隊(duì)的情況
		Q.rear=Q.front;
	delete p;
	return OK;
}
// 判斷是否為空隊(duì)列
int EmptyQueue(LinkQueue &Q){
	return Q.front==Q.rear?true:false;
}
// 復(fù)制隊(duì)列(copy Q1 to Q2)
int CopyQueue(LinkQueue &Q1,LinkQueue &Q2){
	int e;
	QueuePtr p;
	while(!EmptyQueue(Q2)){		// clean Q2
		DeQueue(Q2,e);
	}							// copy one by one
	p=Q1.front->next;
	while(p){
		e=p->data;
		p=p->next;
		EnQueue(Q2,e);
	}
	return OK;
}
// ----------------------  圖的結(jié)構(gòu):鄰接矩陣(有向網(wǎng))  --------------------------//
// 鄰接矩陣元素
typedef struct ArcCell{
	int adj;			// arc value: >0, INFINITY: no link
	char *info;			
}AcrCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
// 圖的結(jié)構(gòu)	
typedef struct{
	char vexs[MAX_VERTEX_NUM][5];		// 頂點(diǎn)數(shù)組
	AdjMatrix arcs;					// 鄰接矩陣
	int vexnum;						// 圖當(dāng)前的頂點(diǎn)數(shù)
	int arcnum;						// 圖當(dāng)前邊的個(gè)數(shù)
}MGraph;
// 建立鄰接圖(key=1為有向網(wǎng),key=0為無(wú)向網(wǎng))
int CreateUDN(MGraph &G,int vexnum,int edgenum,char *names,char *edges,int key){
	int i,j,k,value;
	// 輸入當(dāng)前圖的頂點(diǎn)數(shù),邊個(gè)數(shù)
	G.vexnum=vexnum;
	G.arcnum=edgenum;
	// 各個(gè)頂點(diǎn)數(shù)據(jù)
	for(i=0;i<G.vexnum;++i){
		for(j=0;j<4;j++){
			G.vexs[i][j]=*names;
			names++;
		}
		G.vexs[i][4]='\0';
	}
	// 初始化鄰接矩陣(全為INFINITY)
	for(i=0;i<MAX_VERTEX_NUM;++i){
		for(j=0;j<MAX_VERTEX_NUM;++j){
			G.arcs[i][j].adj=INFINITY;
			G.arcs[i][j].info=NULL;
			
		}
	}
	// 建立鄰接矩陣每條邊的數(shù)值
	for(k=0;k<G.arcnum;++k){
		i=int(*edges)-48;
		edges++;
		j=int(*edges)-48;
		edges++;
		value=(int(*edges)-48)*10;
		edges++;
		value+=int(*edges)-48;
		edges++;
		G.arcs[i][j].adj=value;
		if(!key){
			G.arcs[j][i].adj=value;
		}
	}
	return OK;
}
// 打印出鄰接矩陣
void PrintGraph(MGraph &G){
	int i,j;
	cout<<"\n//--------------- PrintMatrix -----------------//\n\n      ";
	for(i=0;i<G.vexnum;++i){
		cout<<G.vexs[i]<<"   ";
	}
	cout<<endl;
	for(i=0;i<G.vexnum;++i){
		cout<<"\n\n"<<G.vexs[i]<<"   ";
		for(j=0;j<G.vexnum;++j){
			if(G.arcs[i][j].adj==INFINITY)
				cout<<"  /    ";
			else
				cout<<" "<<G.arcs[i][j].adj<<"    ";
		}
	}
	cout<<"\n\n//--------------- PrintMatrix -----------------//\n";
}
// ----------------------  求源點(diǎn)v0到各點(diǎn)的最短路徑  --------------------------//
void ShortestPath(MGraph &G,int v0){
	int D[MAX_VERTEX_NUM],final[MAX_VERTEX_NUM],i,w,v=0,min;
	// 建立隊(duì)列數(shù)組,用以依次儲(chǔ)存最短的路徑
	LinkQueue Q[MAX_VERTEX_NUM];
	// 初始化數(shù)組
	for(i=0;i<G.vexnum;++i){
		InitQueue(Q[i]);
		D[i]=G.arcs[v0][i].adj;
		final[i]=false;
	}
	final[v0]=true;
	// 一個(gè)一個(gè)循環(huán)找出最短距離(共vexnum-1個(gè))
	for(i=1;i<G.vexnum;++i){
		min=INFINITY;
		// 掃描找出非final集中最小的D[]
		for(w=0;w<G.vexnum;++w){
			if(!final[w] && D[w]<min){
				v=w;
				min=D[w];
			}
		}
		final[v]=true;
		// 更新各D[]數(shù)據(jù)
		for(w=0;w<G.vexnum;++w){
			if(!final[w] && G.arcs[v][w].adj+min<D[w]){
				D[w]=G.arcs[v][w].adj+min;
				CopyQueue(Q[v],Q[w]);
				EnQueue(Q[w],v);
			}
		}
	}
	// 打印出結(jié)果
	cout<<"//--------------- ShortestPath -----------------//\n\n";
	cout<<"  出發(fā)地->目的地\t最短距離\t詳細(xì)路徑\n\n";
	for(i=0;i<G.vexnum;i++){
		if(D[i]!=INFINITY){
			cout<<"  "<<G.vexs[v0]<<" -> "<<G.vexs[i]<<"\t\t"<<D[i]<<"   \t\t";
			cout<<G.vexs[v0];
			while(!EmptyQueue(Q[i])){
				DeQueue(Q[i],v);
				cout<<" -> "<<G.vexs[v];
			}
			cout<<" -> "<<G.vexs[i]<<endl;
		}else{
			cout<<"  "<<G.vexs[v0]<<" -> "<<G.vexs[i]<<"\t\tNo path!\n";
			
		}
	}
	cout<<"\n//--------------- ShortestPath -----------------//\n";
}
void PrintCity(char *names,int vexnum){
	int i,j;
	cout<<"城市列表:\n\n";
	for(i=0;i<vexnum;++i){
		cout<<" "<<i<<"-";
		for(j=0;j<4;j++){
			cout<<*names;
			names++;
		}
		cout<<" ";
	}
	cout<<"\n請(qǐng)選擇出發(fā)城市 >";
}
void main(){
	MGraph G;
	// 圖的結(jié)構(gòu)數(shù)據(jù)
	char *edges,*names;
	int vexnum,arcnum,city,kind;
	vexnum=10;
	arcnum=14;
	names="鄭州北京天津南昌上海貴陽(yáng)株洲廣州蘭州西寧";
	edges="01450235035012201591187024503450585056205750604063409835";
	do{
		PrintCity(names,vexnum);
		cin>>city;
		cout<<"\n\n操作:\n0-無(wú)向圖列表 1-有向圖列表\n2-無(wú)向圖矩陣  3-有向圖矩陣\n4-選擇城市 5-退出\n\n請(qǐng)選擇操作 >";
		do{
			cin>>kind;
			if(kind>=0 && kind <=3){
				CreateUDN(G,vexnum,arcnum,names,edges,kind%2);
				switch(kind/2){
				case 0:ShortestPath(G,city);
					break;
				case 1:PrintGraph(G);
					break;
				}
			}
			cout<<"\n\n操作:\n0-無(wú)向圖列表 1-有向圖列表\n2-無(wú)向圖矩陣  3-有向圖矩陣\n4-選擇城市 5-退出\n\n請(qǐng)選擇操作 >";
		}
		while(kind<4);
	}
	while(kind<5);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av性久久久久蜜臀aⅴ四虎| 欧美中文字幕亚洲一区二区va在线| 欧美日韩五月天| 亚洲综合视频在线观看| 精品视频免费在线| 日韩精品视频网| 2024国产精品| 国产成人免费在线| 亚洲人123区| 欧美精品电影在线播放| 麻豆精品新av中文字幕| 久久精品亚洲乱码伦伦中文| 成人精品免费视频| 亚洲一区二区精品视频| 欧美一区二区三区喷汁尤物| 国产一区二区看久久| 国产精品久久久久久久浪潮网站| 99久久久国产精品免费蜜臀| 亚洲成a人片在线观看中文| 欧美一区二区在线播放| 国产精品白丝av| 亚洲精品成人在线| 日韩三级免费观看| 波多野结衣91| 日精品一区二区| 日本一区二区视频在线| 2023国产精品视频| 97久久超碰精品国产| 日韩国产精品久久久久久亚洲| 久久亚洲免费视频| 色婷婷综合中文久久一本| 蜜芽一区二区三区| 综合激情成人伊人| 欧美一级午夜免费电影| 99久久精品情趣| 美女免费视频一区| 亚洲综合清纯丝袜自拍| 久久精品一区蜜桃臀影院| 欧美三电影在线| 成人精品视频一区二区三区 | 亚洲色图都市小说| 91精品国产色综合久久久蜜香臀| 国产白丝精品91爽爽久久| 亚洲国产美女搞黄色| 国产日本一区二区| 日韩欧美一区在线观看| 色综合久久88色综合天天| 韩国成人福利片在线播放| 亚洲黄色免费网站| 中文字幕二三区不卡| 在线电影欧美成精品| 91免费看视频| 国产suv精品一区二区6| 免费亚洲电影在线| 午夜影院在线观看欧美| 亚洲人妖av一区二区| 久久久影院官网| 91精品国产综合久久香蕉的特点| 色婷婷av久久久久久久| 成人精品小蝌蚪| 国产成人精品一区二 | 美国欧美日韩国产在线播放| 一区二区三区资源| 激情综合五月婷婷| 美国一区二区三区在线播放| 天天综合网 天天综合色| 亚洲人亚洲人成电影网站色| 欧美国产激情一区二区三区蜜月| 欧美一区二区三区在线观看视频| 欧美性色欧美a在线播放| 91久久国产综合久久| 99精品欧美一区二区蜜桃免费 | 国产老妇另类xxxxx| 日韩**一区毛片| 日本欧美韩国一区三区| 午夜欧美在线一二页| 亚洲18色成人| 丝袜美腿高跟呻吟高潮一区| 亚洲成a天堂v人片| 日本亚洲最大的色成网站www| 午夜在线电影亚洲一区| 日韩精品亚洲一区二区三区免费| 三级一区在线视频先锋 | 日本一区二区三区高清不卡| 久久午夜免费电影| 国产亚洲一区二区三区四区| 久久综合999| 欧美激情中文不卡| 国产精品成人一区二区艾草| 亚洲欧美激情在线| 亚洲一区二区免费视频| 日韩精品一级中文字幕精品视频免费观看| 亚洲电影中文字幕在线观看| 午夜天堂影视香蕉久久| 日韩中文字幕1| 激情综合网最新| 风间由美一区二区av101 | 久久精品免费观看| 国产一区二区免费在线| 99久久夜色精品国产网站| 色八戒一区二区三区| 在线成人小视频| 精品福利av导航| 国产精品狼人久久影院观看方式| 最新国产精品久久精品| 亚洲成av人片一区二区梦乃| 久久99国产精品免费| 波多野结衣一区二区三区| 欧美性videosxxxxx| 精品成人一区二区三区四区| 中文字幕av资源一区| 亚洲国产裸拍裸体视频在线观看乱了 | 一区二区三区不卡视频| 日本不卡视频在线观看| 国产91丝袜在线18| 精品视频在线免费看| 精品va天堂亚洲国产| 亚洲精品乱码久久久久久| 美日韩一区二区| 94色蜜桃网一区二区三区| 日韩视频一区二区三区| 免费av网站大全久久| 成人午夜视频免费看| 欧美精品成人一区二区三区四区| 国产网红主播福利一区二区| 亚洲无人区一区| 成人性色生活片| 日韩一区二区三区在线| 亚洲欧洲日产国产综合网| 蜜臀av一区二区| 在线免费亚洲电影| 日本一区二区电影| 麻豆精品一区二区| 在线日韩一区二区| 国产精品福利一区| 久久精品国产99久久6| 色婷婷精品久久二区二区蜜臀av| 欧美va在线播放| 亚洲3atv精品一区二区三区| 成人av网址在线观看| 精品国产三级a在线观看| 亚洲午夜精品久久久久久久久| 丁香婷婷综合网| 精品国产网站在线观看| 日韩国产欧美三级| 欧美性猛交一区二区三区精品| 中文字幕av一区二区三区高| 裸体在线国模精品偷拍| 欧美日韩一区二区在线观看| 自拍偷拍欧美精品| 懂色av中文一区二区三区| 欧美大片在线观看一区| 日本特黄久久久高潮| 欧美色图免费看| 亚洲一区二区三区四区在线| 91在线观看一区二区| 欧美激情一区二区三区| 狠狠色丁香婷婷综合久久片| 制服.丝袜.亚洲.另类.中文| 亚洲综合激情网| 欧美亚洲免费在线一区| 亚洲精品国产无天堂网2021 | 91精品国产一区二区三区香蕉| 亚洲日本在线看| 91丝袜国产在线播放| 亚洲婷婷国产精品电影人久久| 成人av午夜电影| 中文字幕欧美一| 一本一本久久a久久精品综合麻豆| 国产精品免费视频一区| 成人免费电影视频| 中文字幕亚洲成人| 99v久久综合狠狠综合久久| **性色生活片久久毛片| 一本色道亚洲精品aⅴ| 亚洲在线成人精品| 欧美日韩国产首页| 日本美女视频一区二区| 日韩精品中文字幕在线一区| 久久精品99久久久| 国产亚洲成aⅴ人片在线观看| 国产成人小视频| 成人免费在线视频| 91福利精品第一导航| 亚洲成人7777| 精品国产3级a| 成人福利在线看| 亚洲影视在线播放| 欧美一区二区三区四区久久| 久久er99精品| 国产精品拍天天在线| 在线免费观看一区| 亚洲不卡av一区二区三区| 日韩精品综合一本久道在线视频| 国产伦精一区二区三区| 亚洲欧美色图小说| 欧美妇女性影城| 粉嫩在线一区二区三区视频| 亚洲精品乱码久久久久久日本蜜臀| 在线电影国产精品|