工程安排(拓撲排序)

2021-09-09 05:50:17 字數 1589 閱讀 1680

讀入檔案project.txt:810

1 2 3 4 5 6 7 8

1,2,6,a

1,5,2,b

2,3,3,c

2,4,5,d

2,5,3,e

3,7,2,f

4,7,3,g

5,6,4,h

6,7,2,i

7,8,2,j

#include #include #include #define max_len 30

typedef struct node //邊表結點

edgenode;

typedef struct //頂點表結點

vertexnode;

void creatgraph(file *fp,vertexnode *g,int vertexnum,int edgenum) //生成圖的鄰接表

}void leastday(vertexnode *g,int vertexnum,int edgenum) //求關鍵路徑

; //頂點最早發生時間

int vl[max_len]=; //頂點最晚發生時間

int ee[max_len]=; //活動最早發生時間

int el[max_len]=; //活動最晚發生時間

edgenode *p;

queue = (int*)malloc(vertexnum*sizeof(int));

for(i=0;iadjvex;

g[k].in--;

if((ve[j]+p->weight)>ve[k])

ve[k] = ve[j]+p->weight;

if(g[k].in ==0)

queue[++rear] = k;

p=p->next;}}

if(quantity=0;i--) //回退階段求vl

}i = -1;

for(j=0;jadjvex;

ee[++i]=ve[j]; //求ee ,e(i)=ve(j)

el[i]=vl[k]-p->weight; //求el , l(i)=vl(k)-act(ai)

if(el[i]==ee[i])

p=p->next;}}

key[n] = g[vertexnum-1].vertexdata;

printf("關鍵路徑為:\n");

for(i=0;i<=n;i++)

printf("\n");

}int main()

printf("資料已從檔案中讀入!\n");

fscanf(fp," %d",&vertexnum);

fscanf(fp," %d",&edgenum);

printf("頂點數%d 邊數%d\n",vertexnum,edgenum);

g=(vertexnode*)malloc(vertexnum*sizeof(vertexnode));

creatgraph(fp,g,vertexnum,edgenum);

leastday(g,vertexnum,edgenum);

return 0;

}

拓撲排序 工程

description 張三是某工程公司的專案工程師。一天公司接下一項大型工程,該公司在大型工程的施工前,先要把整個工程劃分為若干個子工程,並把這些子工程編號為1 2 n 這樣劃分之後,子工程之間就會有一些依賴關係,即一些子工程必須在某些子工程完成之後才能施工,公司需要工程師張三計算整個工程最少的完...

拓撲排序 工程

張三是某工程公司的專案工程師。一天公司接下一項大型工程,該公司在大型工程的施工前,先要把整個工程劃分為若干個子工程,並把這些子工程編號為1,2 n 1,2,n 1,2,n 這樣劃分之後,子工程之間就會有一些依賴關係,即一些子工程必須在某些子工程完成之後才能施工,公司需要工程師張三計算整個工程最少的完...

python 拓撲排序 Python 拓撲排序

python 拓撲排序 在圖論中,由乙個有向無環圖的頂點組成的序列,當且僅當滿足下列條件時,稱為該圖的乙個拓撲排序 英語 topological sorting 每個頂點出現且只出現一次 若a在序列中排在b的前面,則在圖中不存在從b到a的路徑。print 拓撲排序結果 g.topologicalso...