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

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

?? guanjianlujing.cpp

?? 自己編寫的關鍵路徑
?? CPP
字號:
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<stdio.h>
#include <iostream.h>

typedef struct ArcCell{
	int adj;/*頂點關系類型,用1表示相鄰,0表示不相鄰*/
}ArcCell,**AdjMatrix;/*鄰接矩陣*/

typedef struct type{ 
	char data[3];/*頂點值*/
	int info;/*弧的長度*/
	struct type *next;/*頂點的下一個指針*/
}VertexType;

typedef struct{
	VertexType *vexs;/*頂點向量*/
	AdjMatrix arcs;/*鄰接矩陣*/
	int vexnum,arcnum;/*圖的頂點數和邊數*/
}MGraph;

/* ****************** */
typedef int Status;
#define STACK_INIT_SIZE 50
typedef int ElemType;
typedef struct STACK /*定義棧類型*/
{
  ElemType *base;
  ElemType *top;
  int stacksize;
  int length;
}SqStack,*Stack;

void InitStack(Stack *S) /*初始化棧*/
{
  *S=(SqStack *)malloc(sizeof(SqStack));
  (*S)->base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));
  if(!(*S)->base)exit(-1);
  (*S)->top=(*S)->base;
  (*S)->stacksize=STACK_INIT_SIZE;
  (*S)->length=0;
}


Status DestroyStack(Stack *S) /* 銷毀棧*/
{
	free((*S)->base);
	free((*S));
	return 1;
}

Status StackEmpty(SqStack S) /*判斷棧空否*/
{
	if(S.top==S.base)
		return 1;
	else
		return 0;
}
void Push(Stack *S,ElemType e)  /*把數據壓入棧*/
{
  if((*S)->top - (*S)->base>=(*S)->stacksize)
   {
	  (*S)->base=(ElemType *) realloc((*S)->base,
     ((*S)->stacksize + 10) * sizeof(ElemType));
	  if(!(*S)->base)
		  exit(-1);
     (*S)->top=(*S)->base+(*S)->stacksize;
     (*S)->stacksize +=10;
   }
  *((*S)->top++)=e;
  ++(*S)->length;
}

Status Pop(Stack *S,ElemType *e)/*刪除棧頂元素*/
{
  if((*S)->top==(*S)->base) return 0;
  *e=*((*S)->top-1);
  --(*S)->length;
  (*S)->top--;
  return 1;
}


/* ******************** */
void InitGraph(MGraph *G)/*初始圖*/
{ 
	int i,nu,mu;
	printf("\n輸入頂點的個數和(邊)弧的個數:");
	scanf("%d%d",&nu,&mu);
	G->arcs=(ArcCell **)malloc(nu*sizeof(ArcCell *));
	for(i=0;i<nu;i++)/*分配鄰接矩陣空間*/
		G->arcs[i]=(ArcCell *)malloc(nu*sizeof(ArcCell));
	G->vexs=(VertexType *)malloc(nu*sizeof(VertexType));/*分配頂點空間*/
	G->vexnum=nu;G->arcnum=mu;/*圖的頂點數和邊數*/
}


void DestroyGraph(MGraph *G)/* 銷毀圖*/
{
	int i;
	free(G->vexs);
	for(i=0;i<G->vexnum;i++)
		free(G->arcs[i]);
}

void InsertGraph(MGraph *G,int i,VertexType e)
{ 
	if(i<0||i>G->vexnum)
		return;
	G->vexs[i].next=e.next;
	G->vexs[i].info=e.info;
	strcpy(G->vexs[i].data,e.data);
}

int Locate(MGraph G,VertexType v1)/*確定v1在圖頂點中的位置*/
{
	int i;
	for(i=0;i<G.vexnum;i++)
		if(strcmp(v1.data,G.vexs[i].data)==0)
			return i;
		return -1;
}


void CreateUND(MGraph *G)/*采用數組(鄰接矩陣)和鄰接表表示無向圖*/
{
	int i,j,k,*p,d,w;
	VertexType v1,v2,*q2,*q;
	p=(int *)malloc(G->vexnum*sizeof(int)); 
	for(i=0;i<G->vexnum;i++) 
		p[i]=0;
	for(i=0;i<G->vexnum;++i)/*初始鄰接表*/
	{ 
		for(j=0;j<G->vexnum;++j)
			G->arcs[i][j].adj=0;
	}
	printf("\n");
	printf("按順序輸入頂點(方向)和它們的間長度再頂點:如 'v1 3 v2' : \n");
	for(k=0;k<G->arcnum;++k)
	{
		printf("輸入第 %d 條弧: \n",k+1);
		d=0;
		scanf("%s%d%s",v1.data,&w,v2.data);/*輸入相鄰的兩個點值*/
		i=Locate(*G,v1);j=Locate(*G,v2);/*用i 和j來確定它們的位置*/
		G->arcs[i][j].adj=1;
		q2=(VertexType *)malloc(sizeof(VertexType));/*分配一個空間*/
		strcpy(q2->data,G->vexs[j].data);q2->info=w;
		q2->next=NULL;
		if(p[i]==0) 
		{
			G->vexs[i].next=q2;p[i]++;
		}
		else 
		{
			q=&(G->vexs[i]);
			while(d!=p[i])
			{
				d++;q=q->next;
			}
			p[i]++;
			q->next=q2;/*接在最后*/
		}   
	}
 free(p);
}


void FindInDegree(MGraph G,int *indegree)/*對各頂點求入度,鄰接矩陣的列*/
{
	int i,j;
	for(i=0;i<G.vexnum;i++)
		for(j=0;j<G.vexnum;j++)
			if(G.arcs[j][i].adj==1)
				indegree[i]++;
}


int *ve,*vl;/*最早發生時間和最遲發生時間數組,全局的*/
int TopologicalOrder(MGraph G,Stack *T)/*有向圖采用鄰接表存儲結構,
									   歡迎光臨學網,收藏本篇文章 [1] [2] [3] [4]無回路返回1*/
{
	Stack S;
	int i,k,count,*indegree;
	VertexType *p;
	indegree=(int *)malloc(G.vexnum*sizeof(int));/*度數組空間*/
	ve=(int *)malloc(G.vexnum*sizeof(int));/*最早發生時間的數組空間*/
	for(i=0;i<G.vexnum;i++)
		indegree[i]=0;/*初始化*/
	for(i=0;i<G.vexnum;i++)
		ve[i]=0;/*初始化*/
	FindInDegree(G,indegree);/*求各點入度*/
	InitStack(&S);/*初始化棧*/
	InitStack(T);
	for(i=0;i<G.vexnum;++i)
		if(!indegree[i]) 
			Push(&S,i);/*入度為0進棧*/
		count=0;/*對輸出頂點計數*/
		while(!StackEmpty(*S))
		{
			Pop(&S,&i);/*拿出入度為0 的*/
			Push(T,i);/*i號頂點入T棧*/
			++count;/*計數*/
			p=G.vexs[i].next;
			while(p)
			{
				k=Locate(G,*p);
				if(!(--indegree[k])) Push(&S,k);/*減一后為0就入棧*/
				if(ve[i]+p->info>ve[k]) ve[k]=ve[i]+p->info;/*在它的所有鄰點中找出能使最大*/
				p=p->next;
			}
		}
		DestroyStack(&S);
		free(indegree);
		if(count<G.vexnum)
			return 0;/*有向圖有回路*/
		else 
			return 1;
}


int CriticalPath(MGraph G)/*G為有向網,輸出G的各項關鍵活動*/
{
	Stack T;
	int j,k,dut,e1,e2;
	char tag;
	VertexType *p;
	if(!TopologicalOrder(G,&T))
		return 0;/*有回路就不做*/
	vl=(int *)malloc(G.vexnum*sizeof(int));/*最遲發生時間數組空間*/
	for(j=0;j<G.vexnum;j++)/*初始化事件的最遲發生時間*/
		vl[j]=ve[j];
	while(!StackEmpty(*T))/*按拓撲逆序求各事件的 vl 值*/
	{ 
		Pop(&T,&j);/*從最后一個開始*/
		p=G.vexs[j].next;
		while(p)
		{
			k=Locate(G,*p);/*鄰點的位置*/
			dut=p->info;/*兩點間的長度*/
			if(vl[k]-dut>vl[j]) 
				vl[j]=vl[k]-dut;
			p=p->next;
		}
	}
	for(j=0;j<G.vexnum;j++)
		printf("事件 %s 的最早和最遲發生時間分別為 *%d* 和 *%d*\n",G.vexs[j].data,ve[j],vl[j]);
	printf("關鍵活動為:\n");
	for(j=0;j<G.vexnum;j++)/*求關鍵活動和它的值,頂點是事件,弧是活動*/
	{
		p=G.vexs[j].next;/*每個事件要依賴它的鄰點才可知是否最早=最遲*/
		while(p)
		{
			k=Locate(G,*p);/*鄰點的位置*/
			dut=p->info;/*弧長*/
			e1=ve[j];e2=vl[k]-dut;/*如果最早開始時間=最遲開始時間,最遲為鄰點減去弧長*/
			if(e1==e2) 
				tag='*';
			else 
				tag=' ';
			if(tag=='*')
				printf("*%s* 到 *%s* 長度為*%d* 發生時間為 *%d*\n",G.vexs[j].data,G.vexs[k].data,dut,e2); 
			p=p->next;
		}
	}
	free(vl);free(ve);DestroyStack(&T);
	return 1;
}


void main()
{
	MGraph G;
	VertexType e,*p;
	int i;
	InitGraph(&G);
	printf("頂點值: \n");
	for(i=0;i<G.vexnum;++i)/*給圖頂點向量付值*/
	{
		scanf("%s",e.data);
		e.next=NULL;
		e.info=9999;
		InsertGraph(&G,i,e);
	}
	CreateUND(&G);/*構造圖結構*/
	printf("鄰接表為:\n");
	for(i=0;i<G.vexnum;i++)/*輸出鄰接表*/
	{
		printf(" *%s* ",G.vexs[i].data);
		p=G.vexs[i].next;
		while(p)
		{
			printf(" *%s* ",p->data);
			p=p->next;
		}
		printf("\n");
	}
	getch();/*暫停*/
	CriticalPath(G);/*關鍵活動函數*/
	DestroyGraph(&G);/*銷毀圖*/
	getch();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频三区在线播放| 中文字幕国产一区| 国产欧美视频一区二区| 亚洲区小说区图片区qvod| 天堂精品中文字幕在线| 精品一区二区三区日韩| 色婷婷国产精品综合在线观看| 91麻豆精品国产无毒不卡在线观看 | 国产ts人妖一区二区| 91亚洲精华国产精华精华液| 欧美日韩综合不卡| 久久久午夜精品理论片中文字幕| 亚洲黄色片在线观看| 精品亚洲国内自在自线福利| 91视频免费观看| 久久久精品国产免大香伊| 亚洲一区二区精品视频| 国产一区二区日韩精品| 欧美在线观看一二区| 久久精品亚洲麻豆av一区二区| 亚洲自拍偷拍综合| 福利视频网站一区二区三区| 777奇米四色成人影色区| 久久精品免视看| 一级做a爱片久久| 成人激情校园春色| 欧美老肥妇做.爰bbww视频| 国产精品久久久久精k8| 狠狠色综合播放一区二区| 欧美日韩国产在线观看| 亚洲丝袜自拍清纯另类| 粉嫩高潮美女一区二区三区| 欧美一区二区三区不卡| 亚洲电影在线免费观看| 色88888久久久久久影院野外| 久久亚洲综合色| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美日韩在线电影| 中文字幕视频一区二区三区久| 久久99久久精品| 欧美一级理论性理论a| 天天操天天综合网| 91亚洲大成网污www| 国产精品网站导航| 国产精品一二三四区| 精品国精品自拍自在线| 美女免费视频一区二区| 日韩亚洲欧美在线| 午夜电影久久久| 欧美日韩小视频| 日韩精品视频网站| 欧美一区二区三区日韩视频| 亚洲午夜激情av| 欧美日韩精品一二三区| 视频一区二区三区中文字幕| 欧美性色综合网| 亚洲va天堂va国产va久| 欧美日韩国产综合久久| 奇米影视一区二区三区小说| 欧美久久高跟鞋激| 奇米影视一区二区三区| 精品乱码亚洲一区二区不卡| 性欧美大战久久久久久久久| 日韩天堂在线观看| 韩国女主播成人在线| 中文字幕欧美国产| 色婷婷亚洲精品| 日韩精品午夜视频| 日韩无一区二区| 精品一区二区三区久久| 国产精品亚洲人在线观看| 久久久久久久久久美女| 99精品国产热久久91蜜凸| 亚洲色图一区二区三区| 欧美日韩成人综合| 精品在线一区二区| 欧美电影免费观看高清完整版 | 久久久99精品免费观看不卡| www.欧美精品一二区| 亚洲国产精品久久久久婷婷884 | 欧美福利视频一区| 国产91精品露脸国语对白| 亚洲成av人片一区二区梦乃| 久久久久久影视| 欧美日韩国产三级| eeuss鲁片一区二区三区| 麻豆视频一区二区| 亚洲国产精品久久艾草纯爱| 欧美国产日本视频| 精品国产乱码久久久久久久| 欧美亚男人的天堂| 9人人澡人人爽人人精品| 久久成人久久鬼色| 日日嗨av一区二区三区四区| 中文字幕在线观看一区| 久久天天做天天爱综合色| 欧美日韩一区高清| 91麻豆精品秘密| 高清日韩电视剧大全免费| 日本成人超碰在线观看| 亚洲在线观看免费视频| 国产精品福利一区| 欧美激情自拍偷拍| 精品久久国产老人久久综合| 在线播放中文字幕一区| 欧美性欧美巨大黑白大战| 99这里都是精品| 国产一区二区在线观看视频| 美女诱惑一区二区| 免费成人在线观看视频| 青青草91视频| 日韩国产欧美视频| 视频一区二区国产| 日韩成人精品在线| 日本成人超碰在线观看| 免费在线视频一区| 日韩激情在线观看| 日日噜噜夜夜狠狠视频欧美人| 亚洲18色成人| 美女视频黄 久久| 久久www免费人成看片高清| 免费精品视频在线| 精品一区二区三区蜜桃| 国产一本一道久久香蕉| 国产成人精品www牛牛影视| 丁香天五香天堂综合| av一区二区三区在线| 91视频.com| 精品视频123区在线观看| 欧美一区二区久久| 久久一夜天堂av一区二区三区| 国产欧美一区二区三区网站 | 欧美大片免费久久精品三p| 日韩欧美国产午夜精品| 2019国产精品| 中文字幕一区二| 亚洲高清不卡在线观看| 久久99国产精品久久99| 激情综合色播激情啊| 丁香天五香天堂综合| 91福利在线免费观看| 91精品综合久久久久久| 26uuu精品一区二区在线观看| 国产精品久久久久久久久久久免费看 | 国产精品久线在线观看| 亚洲精品高清在线| 日韩电影免费在线| 国产精品77777| 在线视频国产一区| 精品国精品国产| 亚洲免费观看高清| 蜜桃在线一区二区三区| 波多野结衣中文字幕一区| 欧美日韩视频专区在线播放| 精品国产人成亚洲区| 亚洲视频一区二区在线| 麻豆精品一二三| 亚洲成人在线网站| 欧美日韩综合不卡| 亚洲欧美精品午睡沙发| 日本aⅴ亚洲精品中文乱码| 久久99蜜桃精品| 日本韩国欧美国产| 精品国产免费一区二区三区四区 | 91麻豆文化传媒在线观看| 欧美高清视频一二三区| 国产精品每日更新| 七七婷婷婷婷精品国产| 色94色欧美sute亚洲13| 久久久久久**毛片大全| 午夜精品aaa| 99久久国产综合精品女不卡| 精品美女一区二区| 亚洲香肠在线观看| 91麻豆6部合集magnet| 国产亚洲精品aa午夜观看| 日本最新不卡在线| 欧美天堂一区二区三区| 国产精品久久久久久久第一福利| 精品一区二区免费看| 91 com成人网| 亚洲一区欧美一区| 91美女片黄在线观看91美女| 久久久久97国产精华液好用吗| 日本欧美一区二区| 精品视频在线看| 亚洲一级片在线观看| 色综合天天综合| 亚洲女人小视频在线观看| 高清久久久久久| 国产女人aaa级久久久级| 国产九九视频一区二区三区| 欧美成人激情免费网| 日韩影院在线观看| 欧美高清激情brazzers| 亚洲综合区在线| 欧美制服丝袜第一页| 亚洲已满18点击进入久久| 色中色一区二区| 一级日本不卡的影视|