題目描述
讀入任務排程序列,輸出n個任務適合的一種排程方式。
輸入
輸入包含多組測試資料。
每組第一行輸入乙個整數n(n<100000),表示有n個任務。
接下來n行,每行第乙個表示前序任務,括號中的任務為若干個後序任務,表示只有在前序任務完成的情況下,後序任務才能開始。若後序為null則表示無後繼任務。
輸出
輸出排程方式,輸出如果有多種適合的排程方式,請輸出字典序最小的一種。
樣例輸入 copy
4task0(task1,task2)
task1(task3)
task2(null)
task3(null)
樣例輸出 copy
task0 task1 task2 task3
**
#include#include#include#includeusing namespace std;
mapmp;
struct task
return a.name > b.name;//優先順序相同則按字典序排列
}};priority_queueq;
int range;//標識當前等級
void deal(string str)
task0 = word;
if (!mp[word])
word.clear();
i++;//還要加一是因為要跳過左括號
while (i < str.length() && str[i] != ',' && str[i] != ')')
if (word == "null") return;
if (!mp[word]) else mp[word] = mp[task0] - 1;
word.clear();
i++;
}int main()
for (map::iterator i = mp.begin(); i != mp.end(); i++)
while (q.empty() != 1) else
q.pop();}}
return 0;
}
任務系統提醒(優先佇列)
設計了乙個任務系統。這個系統是為了定時提醒人們去完成一些事情。系統大致如下,初始的時候,人們可能會註冊很多任務,每乙個任務的註冊如下 register q num period 表示從系統啟動開始,每過 per iod 秒提醒人們完成編號為 qnum 的任務。你能計算出最先被提醒的 k 個任務嗎?第...
優先佇列(3道優先佇列問題)
優先佇列是一種十分強大的資料結構,它保持了一種動態的有序性,對於不斷改變有入隊的操作,而又需要某種最大或最小的操作的問題是再合適不過了,通常優先佇列的實現是由最小堆或者最大堆完成的,並通過堆排序保持佇列的有序性,模擬佇列的結構,在實際比賽中要寫乙個堆排序還是要一定的時間的,但是stl中queue容器...
優先佇列(看病優先問題)
看病要排隊這個是地球人都知道的常識。不過經過細心的0068的觀察,他發現了醫院裡排隊還是有講究的。0068所去的醫院有三個醫生 汗,這麼少 同時看病。而看病的人病情有輕重,所以不能根據簡單的先來先服務的原則。所以醫院對每種病情規定了10種不同的優先順序。級別為10的優先權最高,級別為1的優先權最低。...