拓撲排序 關鍵路徑

2021-06-22 21:45:22 字數 1774 閱讀 7383

/* 功能function description:        hdoj-2094   

開發環境environment: dev c++ 4.9.9.1

技術特點technique:

版本version:

作者author: 可笑痴狂

日期date: 20120812

備註notes: -----策略問題

*//*

**一:

本來想先用字典樹給名字編號,然後用建立相應的鄰接表,列舉每個節點然後dfs,後來發現一直wrong,看看網上的思路,

發現只用判斷是否存在唯一乙個沒有被打敗的人即可,就根據鄰接表判斷的。

*/#include#include#includetypedef struct node

node;

node c[2001];

typedef struct tree

tree;

tree memory[1000000];

int k,m;

int visit[1001];

int insert(char *a,tree *t)

p=p->next2[id];

++i;

}if(flag||p->order==0)

else

return p->order;}/*

void dfs(int i)}*/

int main()

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

flag=0;

for(i=1;i1)

break;

}if(flag==1)

printf("yes\n");

else

printf("no\n");

/*for(i=1;flag&&i<=n;++i)

for(j=1;j<=n;++j)

}if(j==n+1)

break;

}if(flag)

printf("yes\n");

else

printf("no\n");*/}

return 0;}/*

//**二:

題目要求產生冠軍,其實,仔細看一下題目就可以知道,其實冠軍的產生很簡單,就是所給的資料中存在唯一沒有被打敗的人,

而對於誰打敗誰,根本沒有關係。換句話說,只要把所有名字列出來,並記錄他們分別被打敗的次數,

再從頭到尾查一下總共多少人沒有被打敗過,如果只有乙個人 那就yes了。

#include#include#includetypedef struct tree

tree;

tree memory[1000000];

int k,m;

int num[2005];

int insert(char *a,tree *t)

p=p->next[id];

++i;

}if(flag||p->order==0)

else

return p->order;

}int main()

for(i=1;i1)

break;

}if(flag==1)

printf("yes\n");

else

printf("no\n");

}return 0;

}*/

產生冠軍  hdoj2094

拓撲排序,關鍵路徑

拓撲排序 對於乙個流程圖,可以用頂點表示活動,弧表示活動間的優先關係,這樣所表示的有向圖稱為頂點表示活動的網,即aov網。在網中,如果頂點i到頂點j有一條有向路徑,或者 i,j 是一條弧,則i是j的前驅,j是i的後繼。aov網中不應該出現環。拓撲排序的思想很簡單,1 在有向圖中選乙個沒有前驅的頂點輸...

關鍵路徑(拓撲排序)

一.先給出幾個概念 aoe 網 在帶權有向圖中頂點表示事物,有向邊表示活動,權表示活動持續的時間,則此有向圖稱為邊表示活動的網路。activity on edge network 表示實際工程的aoe 網應該是無環的,且存在唯一入度為0的起始頂點 始點 以及唯一出度為0的完成頂點 終點 利用aoe ...

拓撲排序和關鍵路徑

拓撲排序 乙個無環的有向圖稱為無環圖 directed acyclic graph 簡稱dag圖。所有的工程或者某種流程都可以分為若干個小的工程或者階段,稱這些小的工程或階段為 活動 這些子程式之間存在一定的約束,其中某種子工程的開始必須在另一些子工程完成之後。因此dag圖表示乙個工程,其中有向邊表...