题解 | #任务调度#

任务调度

https://www.nowcoder.com/practice/88d5fa34fe0748e09062e48c6ae6ffc7

#include <iostream>
#include <queue>
#include <vector>
#include <cstring>
using namespace std;
const int N = 1e5+10;
vector<int> g[N];
int d[N], n;
void topsort(){
    priority_queue<int, vector<int>, greater<int>> q; //字典序最小
    for(int i = 0; i < n; i ++){
        if(!d[i]) q.push(i);
    }
    while(q.size()){
        int t = q.top();
        cout<<"Task"<<t<<' ';
        q.pop();
        for(auto i : g[t]){
            if(--d[i] == 0) q.push(i);
        }
    }
    cout<<endl;
}



int main(){

    while(cin>>n){
        string s;
        cin>>s;
        memset(d, 0, sizeof d);
        g[N].clear();
        if(s[6] != 'N'){
            for(int i = 10; i < s.size(); i += 6){
                int a = s[4] - '0';
                int b = s[i] - '0';
                g[a].push_back(b);
                d[b] ++;
            }
        }
        topsort();
        
    }

    return 0;
}

麻烦的是字符串~

全部评论

相关推荐

想润的芹菜人狠话不多:把其中一个老总放中间都会得罪另一个
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务