公司共有 n 個專案和 m 個小組,每個專案要不無人接手,要不就由 m 個小組之一負責。
group[i] 表示第 i 個專案所屬的小組,如果這個專案目前無人接手,那麼 group[i] 就等於 -1。(專案和小組都是從零開始編號的)小組可能存在沒有接手任何專案的情況。
請你幫忙按要求安排這些專案的進度,並返回排序後的專案列表:
同一小組的專案,排序後在列表中彼此相鄰。
專案之間存在一定的依賴關係,我們用乙個列表 beforeitems 來表示,其中 beforeitems[i] 表示在進行第 i 個專案前(位於第 i 個專案左側)應該完成的所有專案。
如果存在多個解決方案,只需要返回其中任意乙個即可。如果沒有合適的解決方案,就請返回乙個 空列表 。
class
solution
} vector<
int> ans;
while
(!q.
empty()
)}}return ans.
size()
== item.
size()
? ans : vector<
int>;}
vector<
int>
sortitems
(int n,
int m, vector<
int>
& group, vectorint>>
& beforeitems)
//對每個沒分配的專案分配乙個id
int itemnum = m;
for(
int i =
0; i < n; i++
)//已經分配組的專案加入對應組的集合
groupitem[group[i]].
push_back
(i);
}for
(int i =
0; i < n; i++
)//依賴專案不是該組的
else}}
//對組進行拓撲排序
vector<
int> topogroupsort =
topo
(groupindeg, groupgraph, id);if
(topogroupsort.
size()
==0);
} vector<
int> ans;
//遍歷每個組
for(
auto
& curgroup : topogroupsort)
//對每個組的組內專案進行拓撲排序
vector<
int> res =
topo
(itemindeg, itemgraph, groupitem[curgroup]);
if(res.
size()
==0);
}for
(auto
& it : res)
}return ans;}}
;
1203 專案管理
1203.專案管理 公司共有n個專案和m個小組,每個專案要不無人接手,要不就由m個小組之一負責。group i 表示第i個專案所屬的小組,如果這個專案目前無人接手,那麼group i 就等於 1。專案和小組都是從零開始編號的 小組可能存在沒有接手任何專案的情況。請你幫忙按要求安排這些專案的進度,並返...
LeetCode 1203 專案管理(Hard)
題目鏈結 python 兩次拓撲排序100 雙重拓撲排序 python 0115 兩次 拓撲排序 220 ms,38 mb defsortitems self,n int,m int,group list int pres list list int list int 拓撲排序 基於bfs排序 佇列...
專案管理 (1) 專案管理流程
2.專案啟動前是整個專案從零到一的乙個過程,對於專案整體至關重要。在啟動前一定要明確專案的目的 目標,需要達成什麼樣的效果。需從容不迫的開啟專案。3.專案計畫階段。一但專案決定要做了,就要進入專案計畫階段,這個階段要考慮的都是專案進行中的實際問題。專案計畫包括 進度計畫,風險計畫,溝通計畫 4.專案...