POJ1949 拓樸排序

2021-05-26 18:07:59 字數 918 閱讀 4075

拓樸排序:

(1)將入度為0的點入棧

(2)while(!stack.empty())

node=stack.top();

for(each  currentnode與node有邊)

indegree[currentnode]--(入度減一)

//poj1949在這裡儲存currentnode完成的時間,當然是貪心記錄最遲完成的時間

if(currentnode的入度為0)

stack.push(currentnode);

}

#include #include #include #include #include using namespace std;

const int maxn=10010;

int finishtime[maxn];

int indegree[maxn];

int outdegree[maxn];

int sumtime[maxn];

int main()

}printf("%d\n",ans);

}return 0;

}

POJ 1949 最小優先佇列

題意是有n行任務,給出完成每項任務所需要的時間長度,求出完成所有任務所需要的最短時間.每個任務都會有乙個約束條件,就是在完成這項任務之前必須完成所列出的其它任務.可以同時做多項任務.簡單來說就像煮飯炒菜問題一樣,可以一邊燒飯一邊炒菜.但炒菜之前必先洗菜.這道題我主要用了最小優先佇列,有點像dijkt...

POJ 1949(DAG最長路徑)

題目 所有任務合起來構成乙個dag,因為任務可以並行,所以從無前驅的節點到無後繼的節點的所有任務路徑中,最耗時的那一條就是所需要的總時間,因為這樣的搜尋中已經考慮了乙個任務所有可能的開始時間。include include include using namespace std int n,c 10...

POJ 1094 拓撲排序

文章大意是將n個字母排序 n 26 最終必須排成鍊錶式的輸出 一旦確定或者出現環,記錄當前步數,後續輸入無視 加個拓撲排序判斷圖的總結 1 如果輸入的有向圖中的點,不存在入度為0的點,則存在迴路,反過來則不成立 2 如果入隊的點的個數小於輸入的點的個數,則肯定存在迴路 3 如果存在的入度為零的點大於...